From: Daniel Stenberg Date: Wed, 26 Feb 2003 12:42:25 +0000 (+0000) Subject: No longer loop to read multiple times before returning back from the transfer X-Git-Tag: curl-7_10_4~123 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5ddc260fc276ed76e52297b95e57b8385e0a3941;p=curl No longer loop to read multiple times before returning back from the transfer function, as this could easily end up looping for a very long time (more or less until the whole transfer was done) and no library-using app would want that. Found thanks to a report by Kyle Sallee. --- diff --git a/lib/transfer.c b/lib/transfer.c index 0d1d563bd..e863be4e1 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -233,17 +233,16 @@ CURLcode Curl_readwrite(struct connectdata *conn, if((k->keepon & KEEP_READ) && (FD_ISSET(conn->sockfd, readfdp))) { - bool readdone = FALSE; + bool readdone = TRUE; /* This is where we loop until we have read everything there is to read or we get a EWOULDBLOCK */ do { + int buffersize = data->set.buffer_size? + data->set.buffer_size:BUFSIZE -1; - /* read! */ - result = Curl_read(conn, conn->sockfd, k->buf, - data->set.buffer_size? - data->set.buffer_size:BUFSIZE -1, - &nread); + /* receive data from the network! */ + result = Curl_read(conn, conn->sockfd, k->buf, buffersize, &nread); if(0>result) break; /* get out of loop */