Fixes the problem Jacky Jam pointed out, where libcurl will "hang" for an
authorDaniel Stenberg <daniel@haxx.se>
Thu, 4 Apr 2002 12:19:56 +0000 (12:19 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 4 Apr 2002 12:19:56 +0000 (12:19 +0000)
extra second after having downloaded headers-only

lib/transfer.c

index f34ec1f8d9be5a2cc43d0c29db287a2e6d2e0e35..5d6f13309bea445e976d8f6c021c4df68e0bbde3 100644 (file)
@@ -215,6 +215,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
          headers at the moment or not. */          
       if (k->header) {
         /* we are in parse-the-header-mode */
+        bool stop_reading = FALSE;
 
         /* header line within buffer loop */
         do {
@@ -356,8 +357,6 @@ CURLcode Curl_readwrite(struct connectdata *conn,
                * If we requested a "no body", this is a good time to get
                * out and return home.
                */
-              bool stop_reading = FALSE;
-
               if(data->set.no_body)
                 stop_reading = TRUE;
               else if(!conn->bits.close) {
@@ -380,9 +379,6 @@ CURLcode Curl_readwrite(struct connectdata *conn,
                 /* we make sure that this socket isn't read more now */
                 k->keepon &= ~KEEP_READ;
                 FD_ZERO(&k->rkeepfd);
-                /* for a progress meter/info update before going away */
-                Curl_pgrsUpdate(conn);
-                return CURLE_OK;
               }
 
               break;           /* exit header line loop */
@@ -609,7 +605,11 @@ CURLcode Curl_readwrite(struct connectdata *conn,
           k->hbufp = data->state.headerbuff;
           k->hbuflen = 0;
         }
-        while (*k->str); /* header line within buffer */
+        while (!stop_reading && *k->str); /* header line within buffer */
+
+        if(stop_reading)
+          /* We've stopped dealing with input, get out of the do-while loop */
+          break;
 
         /* We might have reached the end of the header part here, but
            there might be a non-header part left in the end of the read