]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: mux-h1: Don't stop anymore input processing when the max is reached
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 3 Sep 2019 14:26:15 +0000 (16:26 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 4 Sep 2019 08:30:11 +0000 (10:30 +0200)
The loop is now stopped only when nothing else is consumed from the input buffer
or if a parsing error is encountered. This will let a chance to detect cases
when we fail to add the EOM.

For instance, when the max is reached after the headers parsing and all the
message is received. In this case, we may have the flag H1S_F_REOS set without
the flag H1S_F_APPEND_EOM and no pending input data, leading to an error because
we think it is an abort.

This patch must be backported to 2.0. This bug does not affect 1.9.

src/mux_h1.c

index 24bd93be31ae5fd23f9e05e178eeac650770bd37..90fb9e6f9c9ccb991b924d7825148b8ad11d2d41 100644 (file)
@@ -1496,7 +1496,7 @@ static size_t h1_process_input(struct h1c *h1c, struct buffer *buf, size_t count
                }
 
                count -= htx_used_space(htx) - used;
-       } while (!(h1s->flags & errflag) && count);
+       } while (!(h1s->flags & errflag));
 
        if (h1s->flags & errflag)
                goto parsing_err;