]> git.kaiwu.me - haproxy.git/commit
BUG/MEDIUM: stream-int: make failed splice_in always subscribe to recv
authorWilly Tarreau <w@1wt.eu>
Thu, 15 Nov 2018 13:33:05 +0000 (14:33 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 15 Nov 2018 13:39:03 +0000 (14:39 +0100)
commitf6975aa9202c27c50d4272e0fc37067700a28c0f
tree4f137052bd0fecc8b1b334b3392106aeba82b94b
parent52dabbc4fad338233c7f0c96f977a43f8f81452a
BUG/MEDIUM: stream-int: make failed splice_in always subscribe to recv

As part of the changes that went into 1.9-dev2 regarding the polling
modifications, the changes consecutive to the removal of the wait_list
from the conn_streams (commit 71384551a) made si_cs_recv() occasionally
return without subscribing to receive events, causing spliced transfers
to randomly fail if the client was at least as fast as the server. This
may remain unnoticed on most deployments since servers are usually close
to haproxy with higher bandwidth than clients have, resulting in buffers
always being full.

In order to reproduce his effect, it is better to do it on the local
machine and to transfer very large objects (hundreds of gigs) over a
single connection, to see it suddenly stall after a few tens of gigs.
Now with this fix it's fine even after 3 TB over a single connection.

No backport is needed.
src/stream_interface.c