Commit 5cd4c3ed authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

return from transfer when all headers have been received and nobody is set,

as is the case when doing HEAD requests
parent 147a6730
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -338,6 +338,18 @@ _Transfer(struct connectdata *c_conn)
                  return urg;

                data->header_size += p - data->headerbuff;


                /*
                 * end-of-headers.
                 *
                 * If we requested a "no body" and this isn't a "close"
                 * connection, this is a good time to get out and return
                 * home.
                 */
                if(!conn->bits.close && data->bits.no_body)
                  return CURLE_OK;

                break;		/* exit header line loop */
              }
              
@@ -473,11 +485,6 @@ _Transfer(struct connectdata *c_conn)
             is non-headers. */
          if (str && !header && ((signed int)nread > 0)) {
            
            /*
             * If we requested a HTTP header, this might be a good time to get
             * out and return home.
             */

            if(0 == bodywrites) {
              /* These checks are only made the first time we are about to
                 write a piece of the body */
@@ -539,7 +546,7 @@ _Transfer(struct connectdata *c_conn)

            if(conn->bits.chunk) {
              /*
               * Bless me father for I have sinned. Here come a chunked
               * Bless me father for I have sinned. Here comes a chunked
               * transfer flying and we need to decode this properly.  While
               * the name says read, this function both reads and writes away
               * the data. The returned 'nread' holds the number of actual
@@ -553,7 +560,7 @@ _Transfer(struct connectdata *c_conn)
                /* we're done reading chunks! */
                keepon &= ~KEEP_READ; /* read no more */

                /* There are now (~res) bytes at the end of the str buffer
                /* There are now possibly bytes at the end of the str buffer
                   that weren't written to the client, but we don't care
                   about them right now. */
              }