aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/transfer.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 805484bba..0fc575496 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -361,6 +361,22 @@ Transfer(struct connectdata *c_conn)
*/
if(data->bits.no_body)
return CURLE_OK;
+
+ if(!conn->bits.close) {
+ /* If this is not the last request before a close, we must
+ set the maximum download size to the size of the
+ expected document or else, we won't know when to stop
+ reading! */
+ if(-1 != conn->size)
+ conn->maxdownload = conn->size;
+
+ /* If max download size is *zero* (nothing) we already
+ have nothing and can safely return ok now! */
+ if(0 == conn->maxdownload)
+ return CURLE_OK;
+
+ /* What to do if the size is *not* known? */
+ }
break; /* exit header line loop */
}
@@ -583,16 +599,6 @@ Transfer(struct connectdata *c_conn)
} /* two valid time strings */
} /* we have a time condition */
- if(!conn->bits.close) {
- /* If this is not the last request before a close, we must
- set the maximum download size to the size of the expected
- document or else, we won't know when to stop reading! */
- if(-1 != conn->size)
- conn->maxdownload = conn->size;
-
- /* What to do if the size is *not* known? */
- }
-
} /* this is HTTP */
} /* this is the first time we write a body part */
bodywrites++;