From 7003378eac1cf120c76a789c97993228aab61d8a Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 5 Dec 2018 13:50:11 +0100 Subject: [PATCH] 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. --- src/mux_h1.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mux_h1.c b/src/mux_h1.c index db6389055..464681212 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)