From 5ddc260fc276ed76e52297b95e57b8385e0a3941 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Wed, 26 Feb 2003 12:42:25 +0000
Subject: [PATCH] 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.
---
 lib/transfer.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/lib/transfer.c b/lib/transfer.c
index 0d1d563bd0..e863be4e17 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 */
-- 
GitLab