From: Willy Tarreau Date: Sun, 16 Aug 2009 20:45:38 +0000 (+0200) Subject: [MINOR] set s->srv_error according to the analysers X-Git-Tag: v1.4-dev3~39 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=52a0c60845196b18542570166cb96db4d7942e5c;p=thirdparty%2Fhaproxy.git [MINOR] set s->srv_error according to the analysers s->srv_error was set depending on the frontend's protocol. Now it is set by the HTTP analyser, so that even when switching from a TCP frontend to an HTTP backend, we can have HTTP error messages. --- diff --git a/src/client.c b/src/client.c index c4891686ac..ec8f120178 100644 --- a/src/client.c +++ b/src/client.c @@ -231,10 +231,8 @@ int event_accept(int fd) { else s->do_log = tcp_sess_log; - if (p->mode == PR_MODE_HTTP) - s->srv_error = http_return_srv_error; - else - s->srv_error = default_srv_error; + /* default error reporting function, may be changed by analysers */ + s->srv_error = default_srv_error; s->logs.accept_date = date; /* user-visible date for logging */ s->logs.tv_accept = now; /* corrected date for internal use */ diff --git a/src/proto_http.c b/src/proto_http.c index 0fb759a323..e495d32bbc 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -1789,6 +1789,9 @@ int http_wait_for_request(struct session *s, struct buffer *req, int an_bit) req->l, req->analysers); + /* we're speaking HTTP here, so let's speak HTTP to the client */ + s->srv_error = http_return_srv_error; + if (likely(req->lr < req->r)) http_msg_analyzer(req, msg, &txn->hdr_idx);