aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2003-02-26 12:42:25 +0000
committerDaniel Stenberg <daniel@haxx.se>2003-02-26 12:42:25 +0000
commit5ddc260fc276ed76e52297b95e57b8385e0a3941 (patch)
tree94cdf7041f59bf9b3ddefad073f763ba8e65a39f /lib
parentdb5c9cd4c0500f76eb4af0153b7cde06884b93d6 (diff)
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/transfer.c11
1 files changed, 5 insertions, 6 deletions
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 */