mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 07:37:02 +02:00
BUG/MEDIUM: stream-int: Block reads if channel cannot receive more data
First of all, we must be careful here because this part was modified and each time, this introduced a bug. But, in si_update_rx(), we must not re-enables receives if the channel buffer cannot receive more data. Otherwise the multiplexer will be wake up for nothing. Because the stream is woken up when the multiplexer is waiting for more room to move on, this may lead to a ping-pong loop between the stream and the mux. Note that for now, it does not fix any known bug. All reported issues in this area were fixed in another way. This patch must be backported with a special care. Technically speaking, it may be backported as far as 2.0.
This commit is contained in:
parent
0f41c384ea
commit
69fad00ebf
@ -838,7 +838,7 @@ void si_update_rx(struct stream_interface *si)
|
||||
else
|
||||
si_rx_chan_rdy(si);
|
||||
|
||||
if (!channel_is_empty(ic)) {
|
||||
if (!channel_is_empty(ic) || !channel_may_recv(ic)) {
|
||||
/* stop reading, imposed by channel's policy or contents */
|
||||
si_rx_room_blk(si);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user