Index: transfer.c
===================================================================
RCS file: /cvsroot/curl/lib/transfer.c,v
retrieving revision 1.34
diff -u -r1.34 transfer.c
--- transfer.c	2001/04/18 07:25:11	1.34
+++ transfer.c	2001/04/27 07:59:50
@@ -622,7 +622,7 @@
               /* 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 @@
 
             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)
Index: url.c
===================================================================
RCS file: /cvsroot/curl/lib/url.c,v
retrieving revision 1.118
diff -u -r1.118 url.c
--- url.c	2001/04/25 21:24:27	1.118
+++ url.c	2001/04/27 07:59:51
@@ -1364,6 +1364,9 @@
   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 @@
     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 */
 
