]> git.kaiwu.me - haproxy.git/commitdiff
BUG/MEDIUM: haterm: Subscribe for receives until request was fully drained
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 5 May 2026 14:02:01 +0000 (16:02 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 5 May 2026 16:54:20 +0000 (18:54 +0200)
When draining the request, if some data were received, no subscribe for
receives was performed to get the remaining. However, because request data
are just ignored, we must always subscribe until it was fully
drained. Otherwise, haterm will never be woken up to drain more data.

src/haterm.c

index bab6d810f214ed13155fc604ce76555716c476bc..11bab6a22db9c4d6f23c83494bada629cb1eb0d6 100644 (file)
@@ -290,7 +290,7 @@ static int hstream_htx_buf_rcv(struct connection *conn, struct hstream *hs)
                TRACE_ERROR("connection error during recv", HS_EV_HSTRM_RECV, hs);
                goto stop;
        }
-       else if (!read && !fin && !sc_ep_test(hs->sc, SE_FL_ERROR | SE_FL_EOS)) {
+       else if (!fin && !sc_ep_test(hs->sc, SE_FL_ERROR | SE_FL_EOS)) {
                TRACE_DEVEL("subscribing for read data", HS_EV_HSTRM_RECV, hs);
                conn->mux->subscribe(hs->sc, SUB_RETRY_RECV, &hs->sc->wait_event);
                goto wait_more_data;