From: Christopher Faulet Date: Wed, 5 Dec 2018 12:50:11 +0000 (+0100) Subject: BUG/MINOR: mux-h1: Check h1m flags to set the server conn_mode on request path X-Git-Tag: v1.9-dev10~40 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7003378eac1cf120c76a789c97993228aab61d8a;p=thirdparty%2Fhaproxy.git BUG/MINOR: mux-h1: Check h1m flags to set the server conn_mode on request path On the server side, we must test the request headers to deduce if we able to do keepalive or not. Otherwise, by default, the keepalive will be enabled on the server's connection, whatever the client said. --- diff --git a/src/mux_h1.c b/src/mux_h1.c index db6389055f..4646812126 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -653,6 +653,12 @@ static void h1_set_srv_conn_mode(struct h1s *h1s, struct h1m *h1m) h1m->flags & H1_MF_CONN_CLO)) /* explicit close */ h1s->flags = (h1s->flags & ~H1S_F_WANT_MSK) | H1S_F_WANT_CLO; } + else { + if (h1s->flags & H1S_F_WANT_KAL && + (!(h1m->flags & (H1_MF_VER_11|H1_MF_CONN_KAL)) || /* no KA in HTTP/1.0 */ + h1m->flags & H1_MF_CONN_CLO)) /* explicit close */ + h1s->flags = (h1s->flags & ~H1S_F_WANT_MSK) | H1S_F_WANT_CLO; + } /* If KAL, check if the backend is stopping. If yes, switch in CLO mode */ if (h1s->flags & H1S_F_WANT_KAL && be->state == PR_STSTOPPED)