]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: mux-h2: stop sending HTX once the mux is blocked
authorWilly Tarreau <w@1wt.eu>
Tue, 4 Dec 2018 14:23:57 +0000 (15:23 +0100)
committerWilly Tarreau <w@1wt.eu>
Tue, 4 Dec 2018 17:32:39 +0000 (18:32 +0100)
If we're blocking on mux full, mux busy or whatever, we must get out of
the loop. In legacy mode this problem doesn't exist as we can normally
return 0 but here it's not a sufficient condition to stop sending, so
we must inspect the blocking flags as well.

No backport is needed.

src/mux_h2.c

index c56efc2f82549a768d728be48dbb249565561688..bfcfc267f4ecef1fa3acfd3aab881c93fbe29821 100644 (file)
@@ -4602,7 +4602,7 @@ static size_t h2_snd_buf(struct conn_stream *cs, struct buffer *buf, size_t coun
        }
 
        if (htx) {
-               while (count && !htx_is_empty(htx)) {
+               while (!(h2s->flags & H2_SF_BLK_ANY) && count && !htx_is_empty(htx)) {
                        idx   = htx_get_head(htx);
                        blk   = htx_get_blk(htx, idx);
                        btype = htx_get_blk_type(blk);