]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: mux-h2: wake up flow-controlled streams on initial window update
authorWilly Tarreau <w@1wt.eu>
Wed, 30 Jan 2019 15:11:20 +0000 (16:11 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 30 Jan 2019 15:21:39 +0000 (16:21 +0100)
commitb1c9edc579aedd608107c4693c17160474b5ae62
treec60bbd8e52f686472d0d2fce5e02d3bfe763aca5
parent6432dc87837c95f5364365bf499f4848f8a1e36e
BUG/MEDIUM: mux-h2: wake up flow-controlled streams on initial window update

When a settings frame updates the initial window, all affected streams's
window is updated as well. However the streams are not put back into the
send list if they were already blocked on flow control. The effect is that
such a stream will only be woken up by a WINDOW_UPDATE message but not by
a SETTINGS changing the initial window size. This can be verified with
h2spec's test http2/6.9.2/1 which occasionally fails without this patch.

It is unclear whether this situation is really met in field, but the
fix is trivial, it consists in adding each unblocked streams to the
wait list as is done for the window updates.

This fix must be backported to 1.9. For 1.8 the patch needs quite
a few adaptations. It's better to copy-paste the code block from
h2c_handle_window_update() adding the stream to the send_list when
its mws is > 0.
src/mux_h2.c