From 52a0c60845196b18542570166cb96db4d7942e5c Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 16 Aug 2009 22:45:38 +0200 Subject: [PATCH] [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. --- src/client.c | 6 ++---- src/proto_http.c | 3 +++ 2 files changed, 5 insertions(+), 4 deletions(-) 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); -- 2.47.3