]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: mux-h2: mark that we have too many CS once we have more than the max
authorWilly Tarreau <w@1wt.eu>
Sun, 23 Dec 2018 19:43:58 +0000 (20:43 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 24 Dec 2018 07:13:16 +0000 (08:13 +0100)
commita87546624369ef94546907d90a17da9c985399fd
tree428332f4be0f83967b5fa2ba8a021862e1fc5e53
parentc4ea04c2b626446001d512c28e7ae1a5ccb4a1f0
BUG/MEDIUM: mux-h2: mark that we have too many CS once we have more than the max

Since commit f210191 ("BUG/MEDIUM: h2: don't accept new streams if
conn_streams are still in excess") we're refraining from reading input
frames if we've reached the limit of number of CS. The problem is that
it prevents such situations from working fine. The initial purpose was
in fact to prevent from reading new HEADERS frames when this happens,
and causes some occasional transfer hiccups and pauses with large
concurrencies.

Given that we now properly reject extraneous streams before checking
this value, we can be sure never to have too many streams, and that
any higher value is only caused by a scheduling reason and will go
down after the scheduler calls the code.

This fix must be backported to 1.9 and possibly to 1.8. It may be
tested using h2spec this way with an h2spec config :

  while :; do
    h2spec -o 5 -v -t -S -k -h 127.0.0.1 -p 4443 http2/5.1.2
  done
src/mux_h2.c