--- transfer_orig.c	2008-04-24 10:57:34.000000000 +0300
+++ transfer.c		2008-04-24 11:57:11.000000000 +0300
@@ -1413,7 +1413,7 @@
 
       ssize_t i, si;
       ssize_t bytes_written;
-      bool writedone=TRUE;
+      bool writedone = FALSE;
 
       if((k->bytecount == 0) && (k->writebytecount == 0))
         Curl_pgrsTime(data, TIMER_STARTTRANSFER);
@@ -1571,6 +1571,8 @@
 
       } while(!writedone); /* loop until we're done writing! */
 
+      if (401 == k->httpcode || 407 == k->httpcode)    
+        return CURLE_OK; 	  
     }
 
   } while(0); /* just to break out from! */

