From: Daniel Stenberg Date: Wed, 23 Jan 2002 07:15:32 +0000 (+0000) Subject: Andrés García found out that we didn't properly stop reading from a connection X-Git-Tag: curl-7_9_3~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2db894807b546087b4e03af5afa0cb07aae6127c;p=thirdparty%2Fcurl.git Andrés García found out that we didn't properly stop reading from a connection after the headers on a HEAD request. This bug has been added in 7.9.3 and was mnot present earlier. --- diff --git a/lib/transfer.c b/lib/transfer.c index b57560b56f..f08e88c8aa 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -356,10 +356,11 @@ CURLcode Curl_readwrite(struct connectdata *conn, * If we requested a "no body", this is a good time to get * out and return home. */ - if(data->set.no_body) - return CURLE_OK; + bool stop_reading = FALSE; - if(!conn->bits.close) { + if(data->set.no_body) + stop_reading = TRUE; + else if(!conn->bits.close) { /* If this is not the last request before a close, we must set the maximum download size to the size of the expected document or else, we won't know when to stop @@ -370,10 +371,18 @@ CURLcode Curl_readwrite(struct connectdata *conn, /* If max download size is *zero* (nothing) we already have nothing and can safely return ok now! */ if(0 == conn->maxdownload) - return CURLE_OK; + stop_reading = TRUE; /* What to do if the size is *not* known? */ } + + if(stop_reading) { + /* we make sure that this socket isn't read more now */ + k->keepon &= ~KEEP_READ; + FD_ZERO(&k->rkeepfd); + return CURLE_OK; + } + break; /* exit header line loop */ }