From: Olivier Houchard Date: Fri, 19 Oct 2018 15:26:49 +0000 (+0200) Subject: MINOR: h2: Make sure to return 1 in h2_recv() when needed. X-Git-Tag: v1.9-dev4~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81a15af6bc003dc247a87799b48162a37a0ae27f;p=thirdparty%2Fhaproxy.git MINOR: h2: Make sure to return 1 in h2_recv() when needed. In h2_recv(), return 1 if we have data available, or if h2_recv_allowed() failed, to be sure h2_process() is called. Also don't subscribe if our buffer is full. --- diff --git a/src/mux_h2.c b/src/mux_h2.c index ae885d9337..f7999d2796 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -2236,10 +2236,10 @@ static int h2_recv(struct h2c *h2c) size_t ret; if (h2c->wait_event.wait_reason & SUB_CAN_RECV) - return 0; + return (b_data(&h2c->dbuf)); if (!h2_recv_allowed(h2c)) - return 0; + return 1; buf = h2_get_buf(h2c, &h2c->dbuf); if (!buf) { @@ -2255,10 +2255,11 @@ static int h2_recv(struct h2c *h2c) ret = 0; } while (ret > 0); - if (h2_recv_allowed(h2c)) { + if (h2_recv_allowed(h2c) && (b_data(buf) < buf->size)) { conn_xprt_want_recv(conn); conn->xprt->subscribe(conn, SUB_CAN_RECV, &h2c->wait_event); } + if (!b_data(buf)) { h2_release_buf(h2c, &h2c->dbuf); return 0;