]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: h2: don't try to parse incomplete H1 responses
authorWilly Tarreau <w@1wt.eu>
Thu, 2 Nov 2017 14:14:19 +0000 (15:14 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 2 Nov 2017 14:53:04 +0000 (15:53 +0100)
This situation which must not happen does in fact happen when feeding
artificial responses using errorfiles, Lua or an applet. For now it
causes the H1 response parser to loop forever trying to get a more
complete response. Since it cannot progress, let's return an error.

src/mux_h2.c

index bc1076884277d0ad76e9ef69914aedf99fb21528..2fffcdeca60c4608681bbcbcec28fe23261b4240 100644 (file)
@@ -2552,10 +2552,10 @@ static int h2s_frt_make_resp_headers(struct h2s *h2s, struct buffer *buf)
        ret = h1_headers_to_hdr_list(bo_ptr(buf), bo_ptr(buf) + buf->o,
                                     list, sizeof(list)/sizeof(list[0]), h1m);
        if (ret <= 0) {
-               if (!ret)
-                       goto end; // missing input
-
-               /* Impossible to index the response.
+               /* incomplete or invalid response, this is abnormal coming from
+                * haproxy and may only result in a bad errorfile or bad Lua code
+                * so that won't be fixed, raise an error now.
+                *
                 * FIXME: we should instead add the ability to only return a
                 * 502 bad gateway. But in theory this is not supposed to
                 * happen.