From: Willy Tarreau Date: Sun, 12 Jul 2009 07:55:41 +0000 (+0200) Subject: [MINOR] ensure we can jump from swiching rules to http without data X-Git-Tag: v1.4-dev1~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d88bb6f819e947d34c17270b3c5e7079b4b8ea3a;p=thirdparty%2Fhaproxy.git [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. --- diff --git a/src/session.c b/src/session.c index 7d95669fb4..af6061f598 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) {