BUG/MINOR: mux-h1: Do h2 upgrade only on the first request
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 25 Sep 2019 07:10:46 +0000 (09:10 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 26 Sep 2019 14:51:02 +0000 (16:51 +0200)
When a request is received, if the h2 preface is matched, an implicit upgrade
from h1 to h2 is performed. This must only be done for the first request on a
connection. But a test was missing to unsure it is really the first request.

This patch must be backported to 2.0.

src/mux_h1.c

index ee12686..5056fa8 100644 (file)
@@ -891,7 +891,7 @@ static size_t h1_process_headers(struct h1s *h1s, struct h1m *h1m, struct htx *h
        union h1_sl h1sl;
        int ret = 0;
 
-       if (!(h1m->flags & H1_MF_RESP)) {
+       if (!(h1s->flags & H1S_F_NOT_FIRST) && !(h1m->flags & H1_MF_RESP)) {
                /* Try to match H2 preface before parsing the request headers. */
                ret = b_isteq(buf, 0, b_data(buf), ist(H2_CONN_PREFACE));
                if (ret > 0)