I'm chasing down the flow control bugs in AbstractH2StreamMultiplexer, and
I had a few questions:

1. Why do we use `Integer.MAX_VALUE` on lines 378 and 1007?
2. Why is there only one `lowMark` field, used for both input and output
windows? Shouldn't there be two, since the local and remote windows can be
radically different in size?
3. Is line 1209 in the wrong method? Meaning, should it be in
`applyLocalSettings` instead of `applyRemoteSettings`?

Also, I have DEBUG logs from a surprisingly minimal repro case available
here:

https://gist.githubusercontent.com/rschmitt/cca115b696169edcebea54183c99ca1e/raw/5504715fe3b6bb78ede1161baa2e2872b61e0d3d/flow-control-errors.log

It appears that the remote Netty server thinks that the stream 0 window
size is larger than the Apache client thinks it is. When the client tries
to increase the window size to Integer.MAX_VALUE, it overflows on the
server side. Anyone got any ideas?

Reply via email to