mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-28 14:21:00 +01:00
DEBUG: stream-int: Check CS_FL_WANT_ROOM is not set with an empty input buffer
In si_cs_recv(), the mux must never set CS_FL_WANT_ROOM flag on the conn-stream if the input buffer is empty and nothing was copied. It is important because, there is nothing the app layer can do in this case to make some room. If this happens, this will most probably lead to a ping-pong loop between the mux and the stream. With this BUG_ON(), it will be easier to spot such bugs.
This commit is contained in:
parent
ec361bbd84
commit
ae17925b87
@ -1377,6 +1377,11 @@ int si_cs_recv(struct conn_stream *cs)
|
||||
ret = cs->conn->mux->rcv_buf(cs, &ic->buf, max, cur_flags);
|
||||
|
||||
if (cs->flags & CS_FL_WANT_ROOM) {
|
||||
/* CS_FL_WANT_ROOM must not be reported if the channel's
|
||||
* buffer is empty.
|
||||
*/
|
||||
BUG_ON(c_empty(ic));
|
||||
|
||||
si_rx_room_blk(si);
|
||||
/* Add READ_PARTIAL because some data are pending but
|
||||
* cannot be xferred to the channel
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user