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 ae885d9..f7999d2 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -2236,10 +2236,10 @@
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 @@
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;