From: Christopher Faulet Date: Mon, 31 Aug 2020 09:07:07 +0000 (+0200) Subject: BUG/MEDIUM: http-ana: Don't wait to send 1xx responses received from servers X-Git-Tag: v2.3-dev4~46 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7d518454bb501659e8b13f38c22d216f5485be34;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: http-ana: Don't wait to send 1xx responses received from servers When an informational response (1xx) is received, we must be sure to send it ASAP. To do so, CF_SEND_DONTWAIT flag must be set on the response channel to instruct the stream-interface to not set the CO_SFL_MSG_MORE flag on the transport layer. Otherwise the response delivery may be delayed, because of the commit 8945bb6c0 ("BUG/MEDIUM: stream-int: fix loss of CO_SFL_MSG_MORE flag in forwarding"). Note that a previous patch (cf6898cd ["BUG/MINOR: http-ana: Don't wait to send 1xx responses generated by HAProxy"]) add this flag on 1xx responses generated by HAProxy but not on responses coming from servers. This patch must be backported to 2.2 and may be backported as far as 1.9, for HTX part only. But this part has changed in the 2.2, so it may be a bit tricky. Note it does not fix any known bug on 2.1 and below because the CO_SFL_MSG_MORE flag is ignored by the h1 mux. --- diff --git a/src/http_ana.c b/src/http_ana.c index ac2990e99f..39f75de233 100644 --- a/src/http_ana.c +++ b/src/http_ana.c @@ -1757,6 +1757,7 @@ int http_wait_for_response(struct stream *s, struct channel *rep, int an_bit) msg->flags = 0; txn->status = 0; s->logs.t_data = -1; /* was not a response yet */ + rep->flags |= CF_SEND_DONTWAIT; /* Send ASAP informational messages */ goto next_one; }