From: Christopher Faulet Date: Mon, 23 Sep 2019 14:11:57 +0000 (+0200) Subject: BUG/MEDIUM: stream-int: Process connection/CS errors during synchronous sends X-Git-Tag: v2.1-dev2~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e55a5a41713b629d349ba020183744a38129b892;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: stream-int: Process connection/CS errors during synchronous sends If an error occurred on the connection or the conn-stream, no syncrhonous send is performed. If the error was not already processed and there is no more I/O, it will never be processed and the stream will never be notified of this error. This may block the stream until a timeout is reached or infinitly if there is no timeout. Concretly, this bug can be triggered time to time with h2spec, running the test "http2/5.1.1/2". This patch depends on the commit 328ed220a "BUG/MINOR: stream-int: Process connection/CS errors first in si_cs_send()". Both must be backported to 2.0 and probably to 1.9. In 1.9, the code is totally different, so this patch would have to be adapted. --- diff --git a/src/stream_interface.c b/src/stream_interface.c index e661fb2f59..5a0c3cae8d 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -917,12 +917,6 @@ void si_sync_send(struct stream_interface *si) if (!cs) return; - if (cs->flags & (CS_FL_ERROR|CS_FL_ERR_PENDING)) - return; - - if (cs->conn->flags & CO_FL_ERROR) - return; - si_cs_send(cs); }