diff options
author | Daniel Stenberg <daniel@haxx.se> | 2003-02-26 12:42:25 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2003-02-26 12:42:25 +0000 |
commit | 5ddc260fc276ed76e52297b95e57b8385e0a3941 (patch) | |
tree | 94cdf7041f59bf9b3ddefad073f763ba8e65a39f | |
parent | db5c9cd4c0500f76eb4af0153b7cde06884b93d6 (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.
-rw-r--r-- | lib/transfer.c | 11 |
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 */ |