When an informational response (1xx) is returned by HAProxy, 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").
This patch 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 previous versions because the CO_SFL_MSG_MORE flag is ignored by the h1
mux.
channel_shutr_now(res);
res->flags |= CF_EOI; /* The response is terminated, add EOI */
}
+ else {
+ /* Send ASAP informational messages. Rely on CF_EOI for final
+ * response.
+ */
+ res->flags |= CF_SEND_DONTWAIT;
+ }
data = htx->data - co_data(res);
c_adv(res, data);