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.
This commit is contained in:
Christopher Faulet 2018-12-05 13:50:11 +01:00 committed by Willy Tarreau
parent 674e0addc4
commit 7003378eac

View File

@ -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)