]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: mux-h1: Change client conn_mode on an explicit close for the response
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 29 Nov 2018 08:55:22 +0000 (09:55 +0100)
committerWilly Tarreau <w@1wt.eu>
Sat, 1 Dec 2018 16:37:27 +0000 (17:37 +0100)
in h1_set_cli_conn_mode(), on the response path, If the response's connection
header is explicitly set to close and if the request is unfinished (state !=
DONE), then the client connection is marked as WANT_CLO.

src/mux_h1.c

index b350e0620ef30a8b4f9973498246af530fe49ead..1681861ddad8b5453af01b0a4007122a65dac02f 100644 (file)
@@ -585,7 +585,8 @@ static void h1_set_cli_conn_mode(struct h1s *h1s, struct h1m *h1m)
                if ((h1s->meth == HTTP_METH_CONNECT && h1s->status == 200) ||
                    h1s->status == 101)
                        h1s->flags = (h1s->flags & ~H1S_F_WANT_MSK) | H1S_F_WANT_TUN;
-               else if (!(h1m->flags & H1_MF_XFER_LEN)) /* no length known => close */
+               else if (!(h1m->flags & H1_MF_XFER_LEN) || /* no length known => close */
+                        (h1m->flags & H1_MF_CONN_CLO && h1s->req.state != H1_MSG_DONE)) /*explicit close and unfinished request */
                        h1s->flags = (h1s->flags & ~H1S_F_WANT_MSK) | H1S_F_WANT_CLO;
        }
        else {