aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/transfer.c4
-rw-r--r--lib/url.c5
2 files changed, 6 insertions, 3 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 52fde048f..805484bba 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -622,7 +622,7 @@ Transfer(struct connectdata *c_conn)
/* If it returned OK, we just keep going */
}
- if(conn->maxdownload &&
+ if((-1 != conn->maxdownload) &&
(bytecount + nread >= conn->maxdownload)) {
nread = conn->maxdownload - bytecount;
if((signed int)nread < 0 ) /* this should be unusual */
@@ -634,7 +634,7 @@ Transfer(struct connectdata *c_conn)
Curl_pgrsSetDownloadCounter(data, (double)bytecount);
- if(! conn->bits.chunk) {
+ if(!conn->bits.chunk && nread) {
/* If this is chunky transfer, it was already written */
urg = Curl_client_write(data, CLIENTWRITE_BODY, str, nread);
if(urg)
diff --git a/lib/url.c b/lib/url.c
index d85c61404..924f342bb 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -1364,6 +1364,9 @@ static CURLcode Connect(struct UrlData *data,
conn->bits.user_passwd = data->userpwd?1:0;
conn->bits.proxy_user_passwd = data->proxyuserpwd?1:0;
+ /* maxdownload must be -1 on init, as 0 is a valid value! */
+ conn->maxdownload = -1; /* might have been used previously! */
+
/* Store creation time to help future close decision making */
conn->created = Curl_tvnow();
@@ -2029,8 +2032,8 @@ static CURLcode Connect(struct UrlData *data,
conn->ppath = path; /* set this too */
/* re-use init */
- conn->maxdownload = 0; /* might have been used previously! */
conn->bits.reuse = TRUE; /* yes, we're re-using here */
+ conn->maxdownload = -1; /* might have been used previously! */
free(old_conn); /* we don't need this anymore */