From 42b77b0ba64cd2f8b1b90b4ca4ac764c1de9f58c Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 25 Jun 2020 16:11:20 +0200 Subject: [PATCH] BUG/MINOR: stream-int: Don't wait to send truncated HTTP messages In HTX, since the commit 8945bb6c0 ("BUG/MEDIUM: stream-int: fix loss of CO_SFL_MSG_MORE flag in forwarding"), the CO_SFL_MSG_MORE flag is set on the transport layer if the end of the HTTP message is not reached, to delay the data forwarding. To do so, the CF_EOI flag is tested and must not be set on the output channel. But the CO_SFL_MSG_MORE flag is also added if the message was truncated. Only CF_SHUTR is set if this case. So the forwarding may be delayed to wait more data that will never come. So, in HTX, the CO_SFL_MSG_MORE flag must not be set if the message is finished (full or truncated). No backport is needed. --- src/stream_interface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stream_interface.c b/src/stream_interface.c index 8b84703406..314e628015 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -698,7 +698,7 @@ int si_cs_send(struct conn_stream *cs) if ((!(oc->flags & (CF_NEVER_WAIT|CF_SEND_DONTWAIT)) && ((oc->to_forward && oc->to_forward != CHN_INFINITE_FORWARD) || (oc->flags & CF_EXPECT_MORE) || - (IS_HTX_STRM(si_strm(si)) && !(oc->flags & CF_EOI)))) || + (IS_HTX_STRM(si_strm(si)) && !(oc->flags & (CF_EOI|CF_SHUTR))))) || ((oc->flags & CF_ISRESP) && ((oc->flags & (CF_AUTO_CLOSE|CF_SHUTW_NOW)) == (CF_AUTO_CLOSE|CF_SHUTW_NOW)))) send_flag |= CO_SFL_MSG_MORE; -- 2.47.3