diff --git a/src/client.c b/src/client.c index c4891686a..ec8f12017 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 0fb759a32..e495d32bb 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);