From: Willy Tarreau Date: Sun, 18 Oct 2009 21:43:57 +0000 (+0200) Subject: [MINOR] http: pre-set the persistent flags in the transaction X-Git-Tag: v1.4-dev5~91 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75a5fef4d22fe2bda10d79a232e9df43e7cb3136;p=thirdparty%2Fhaproxy.git [MINOR] http: pre-set the persistent flags in the transaction We should pre-set the persistent flags then try to clear them instead of the opposite. --- diff --git a/src/proto_http.c b/src/proto_http.c index 31a2098f67..207483ce1f 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -2069,16 +2069,20 @@ int http_wait_for_request(struct session *s, struct buffer *req, int an_bit) conn_ka = 1; } + /* prepare flags for this transaction */ + txn->flags |= (TX_CLI_CONN_KA | TX_SRV_CONN_KA); + txn->flags |= (TX_CLI_CONN_KA | TX_SRV_CONN_KA); + if ((msg->sl.rq.v_l == 8) && (req->data[msg->som + msg->sl.rq.v + 5] == '1') && (req->data[msg->som + msg->sl.rq.v + 7] == '0')) { /* HTTP/1.0 */ - if (conn_ka) - txn->flags |= (TX_CLI_CONN_KA | TX_SRV_CONN_KA); + if (!conn_ka) + txn->flags &= ~(TX_CLI_CONN_KA | TX_SRV_CONN_KA); } else { - /* HTTP/1.0 */ - if (!conn_cl) - txn->flags |= (TX_CLI_CONN_KA | TX_SRV_CONN_KA); + /* HTTP/1.1 */ + if (conn_cl) + txn->flags &= ~(TX_CLI_CONN_KA | TX_SRV_CONN_KA); } /* we can mark the connection as non-persistent if needed */