BUG/MEDIUM: stream_int: Don't check CO_FL_SOCK_RD_SH flag to trigger cs receive
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 17 Apr 2018 12:33:47 +0000 (14:33 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 8 Aug 2018 08:41:11 +0000 (10:41 +0200)
It is mandatory to be sure to process data blocked in the RX buffer of the
conn_stream while the shutr/read0 was already processed. The stream interface
doesn't need to rely on this flags because it already tests CS_FL_EOS.

src/stream_interface.c

index 1d67c31..e56a7c1 100644 (file)
@@ -1235,7 +1235,7 @@ static void si_cs_recv_cb(struct conn_stream *cs)
         * that if such an event is not handled above in splice, it will be handled here by
         * recv().
         */
-       while (!(conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_WAIT_ROOM | CO_FL_HANDSHAKE)) &&
+       while (!(conn->flags & (CO_FL_ERROR | CO_FL_WAIT_ROOM | CO_FL_HANDSHAKE)) &&
               !(cs->flags & (CS_FL_ERROR|CS_FL_EOS)) && !(ic->flags & CF_SHUTR)) {
                max = channel_recv_max(ic);