aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2014-08-03 13:57:57 +0900
committerDaniel Stenberg <daniel@haxx.se>2014-08-03 22:49:56 +0200
commit67920e15167790e6d5f347ef7672bb4a2e5f712f (patch)
treee6728cadf509311578146bb6905e6d3dcedeefb7
parent4d4dd7aea0f8890ca9dc9b9190fab2cdef9267f5 (diff)
HTTP/2: Fix infinite loop in readwrite_data()
To prevent infinite loop in readwrite_data() function when stream is reset before any response body comes, reset closed flag to false once it is evaluated to true.
-rw-r--r--lib/http2.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/http2.c b/lib/http2.c
index 77dd014d3..c53012d6e 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -668,6 +668,9 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
(void)sockindex; /* we always do HTTP2 on sockindex 0 */
if(httpc->closed) {
+ /* Reset to FALSE to prevent infinite loop in readwrite_data
+ function. */
+ httpc->closed = FALSE;
return 0;
}
@@ -747,6 +750,9 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
/* If stream is closed, return 0 to signal the http routine to close
the connection */
if(httpc->closed) {
+ /* Reset to FALSE to prevent infinite loop in readwrite_data
+ function. */
+ httpc->closed = FALSE;
return 0;
}
*err = CURLE_AGAIN;