From d88bb6f819e947d34c17270b3c5e7079b4b8ea3a Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 12 Jul 2009 09:55:41 +0200 Subject: [PATCH] [MINOR] ensure we can jump from swiching rules to http without data In case of switching from TCP to HTTP, we want the HTTP request timeout to be properly initialized. For this, we have to jump to the analyser without breaking out of the loop nor waiting for incoming data. The way it is done right now is not particularly clean but it works. A cleaner method might involve pushing function pointers into a circular list. --- src/session.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/session.c b/src/session.c index 7d95669fb..af6061f59 100644 --- a/src/session.c +++ b/src/session.c @@ -818,6 +818,13 @@ resync_stream_interface: last_ana |= AN_REQ_SWITCHING_RULES; if (!process_switching_rules(s, s->req, AN_REQ_SWITCHING_RULES)) break; + /* FIXME: we mait switch from TCP to HTTP and want to + * immediately loop back to the top. This is a dirty way + * of doing it, and we should find a cleaner method relying + * on a circular list of function pointers. + */ + if ((s->req->analysers & ~last_ana) & AN_REQ_WAIT_HTTP) + continue; } if (s->req->analysers & AN_REQ_HTTP_PROCESS_BE) {