From: Willy Tarreau Date: Tue, 31 Dec 2013 22:03:09 +0000 (+0100) Subject: BUG/MINOR: http: don't clear the SI_FL_DONT_WAKE flag between requests X-Git-Tag: v1.5-dev22~77 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c920096993c2c01b3e80d34e0297bba490300184;p=thirdparty%2Fhaproxy.git BUG/MINOR: http: don't clear the SI_FL_DONT_WAKE flag between requests It's a bit hasardous to wipe out all channel flags, this flag should be left intact as it protects against recursive calls. Fortunately, we have no possibility to meet this situation with current applets, but better fix it before it becomes an issue. This bug has been there for a long time, but it doesn't seem worth backporting the fix. --- diff --git a/src/proto_http.c b/src/proto_http.c index 16db90a412..7a9eaa0932 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -4385,7 +4385,7 @@ void http_end_txn_clean_session(struct session *s) s->req->cons->err_type = SI_ET_NONE; s->req->cons->conn_retries = 0; /* used for logging too */ s->req->cons->exp = TICK_ETERNITY; - s->req->cons->flags = SI_FL_NONE; + s->req->cons->flags &= SI_FL_DONT_WAKE; /* we're in the context of process_session */ s->req->flags &= ~(CF_SHUTW|CF_SHUTW_NOW|CF_AUTO_CONNECT|CF_WRITE_ERROR|CF_STREAMER|CF_STREAMER_FAST|CF_NEVER_WAIT); s->rep->flags &= ~(CF_SHUTR|CF_SHUTR_NOW|CF_READ_ATTACHED|CF_READ_ERROR|CF_READ_NOEXP|CF_STREAMER|CF_STREAMER_FAST|CF_WRITE_PARTIAL|CF_NEVER_WAIT); s->flags &= ~(SN_DIRECT|SN_ASSIGNED|SN_ADDR_SET|SN_BE_ASSIGNED|SN_FORCE_PRST|SN_IGNORE_PRST);