From 81a15af6bc003dc247a87799b48162a37a0ae27f Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Fri, 19 Oct 2018 17:26:49 +0200 Subject: [PATCH] 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. --- src/mux_h2.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mux_h2.c b/src/mux_h2.c index ae885d933..f7999d279 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;