From: Daniel Stenberg Date: Wed, 28 Dec 2022 10:08:44 +0000 (+0100) Subject: transfer: break the read loop when RECV is cleared X-Git-Tag: curl-7_88_0~205 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=54120efdf64c40c93308dee3935bbed7e1cdc1aa;p=thirdparty%2Fcurl.git transfer: break the read loop when RECV is cleared When the RECV bit is cleared because the response reading for this transfer is complete, the read loop should be stopped. data_pending() can otherwise still return TRUE and another read would be attempted. Reported-by: Hide Ishikawa Fixes #10172 Closes #10174 --- diff --git a/lib/transfer.c b/lib/transfer.c index e58619a84c..58bb8be4cf 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -776,8 +776,8 @@ static CURLcode readwrite_data(struct Curl_easy *data, k->keepon &= ~KEEP_RECV; } - if(k->keepon & KEEP_RECV_PAUSE) { - /* this is a paused transfer */ + if((k->keepon & KEEP_RECV_PAUSE) || !(k->keepon & KEEP_RECV)) { + /* this is a paused or stopped transfer */ break; }