]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: http-ana: Don't wait to send 1xx responses received from servers
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 31 Aug 2020 09:07:07 +0000 (11:07 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Mon, 31 Aug 2020 09:07:08 +0000 (11:07 +0200)
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.

src/http_ana.c

index ac2990e99fa15b4c4635ba51c0ea94f567e2c7fa..39f75de233ce6ee7a883c2a34baf1bce8594cb42 100644 (file)
@@ -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;
        }