From 67920e15167790e6d5f347ef7672bb4a2e5f712f Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sun, 3 Aug 2014 13:57:57 +0900 Subject: [PATCH] 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. --- lib/http2.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/http2.c b/lib/http2.c index 77dd014d33bd6b..c53012d6ed0c40 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;