diff options
author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2014-08-03 13:57:57 +0900 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2014-08-03 22:49:56 +0200 |
commit | 67920e15167790e6d5f347ef7672bb4a2e5f712f (patch) | |
tree | e6728cadf509311578146bb6905e6d3dcedeefb7 | |
parent | 4d4dd7aea0f8890ca9dc9b9190fab2cdef9267f5 (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.c | 6 |
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; |