void http_res_set_status(unsigned int status, const char *reason, struct stream *s);
void http_check_request_for_cacheability(struct stream *s, struct channel *req);
void http_check_response_for_cacheability(struct stream *s, struct channel *res);
-int http_send_name_header(struct stream *s, struct proxy *be, const char *srv_name);
void http_perform_server_redirect(struct stream *s, struct stream_interface *si);
void http_server_error(struct stream *s, struct stream_interface *si, int err, int finst, const struct buffer *msg);
void http_reply_and_close(struct stream *s, short status, struct buffer *msg);
}
}
-/* send a server's name with an outgoing request over an established connection.
- * Note: this function is designed to be called once the request has been
- * scheduled for being forwarded. This is the reason why the number of forwarded
- * bytes have to be adjusted.
- */
-int http_send_name_header(struct stream *s, struct proxy *be, const char *srv_name)
-{
- struct htx *htx;
- struct http_hdr_ctx ctx;
- struct ist hdr;
- uint32_t data;
-
- hdr = ist2(be->server_id_hdr_name, be->server_id_hdr_len);
- htx = htxbuf(&s->req.buf);
- data = htx->data;
-
- ctx.blk = NULL;
- while (http_find_header(htx, hdr, &ctx, 1))
- http_remove_header(htx, &ctx);
- http_add_header(htx, hdr, ist2(srv_name, strlen(srv_name)));
-
- if (co_data(&s->req)) {
- if (data >= htx->data)
- c_rew(&s->req, data - htx->data);
- else
- c_adv(&s->req, htx->data - data);
- }
- return 0;
-}
-
/*
* In a GET, HEAD or POST request, check if the requested URI matches the stats uri
* for the current backend.