blob: 1e037d6c98d46530e7a566aad6fb92b6e0aa3cf9 [file] [log] [blame]
From c7de3617464f935f6bab113b4da1bb91253baa7e Mon Sep 17 00:00:00 2001
From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
Date: Sat, 13 Sep 2014 11:59:23 +0900
Subject: [PATCH] http2: Fix busy loop when EOF is encountered
Previously we did not handle EOF from underlying transport socket and
wrongly just returned error code CURL_AGAIN from http2_recv, which
caused busy loop since socket has been closed. This patch adds the
code to handle EOF situation and tells the upper layer that we got
EOF.
---
lib/http2.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/lib/http2.c b/lib/http2.c
index 604514d..f86d3eb 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -744,6 +744,12 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
}
infof(conn->data, "nread=%zd\n", nread);
+
+ if(nread == 0) {
+ failf(conn->data, "EOF");
+ return 0;
+ }
+
rv = nghttp2_session_mem_recv(httpc->h2,
(const uint8_t *)httpc->inbuf, nread);
--
2.0.1