*** lib/transfer.c.orig	2010-03-09 12:27:48.000000000 -0800
--- lib/transfer.c	2010-03-09 12:27:27.000000000 -0800
***************
*** 1062,1082 ****
    if(result)
      return result;
  
!   if(data->set.timeout &&
!      (Curl_tvdiff(k->now, k->start) >= data->set.timeout)) {
!     if(k->size != -1) {
!       failf(data, "Operation timed out after %ld milliseconds with %"
!             FORMAT_OFF_T " out of %" FORMAT_OFF_T " bytes received",
!             data->set.timeout, k->bytecount, k->size);
!     } else {
!       failf(data, "Operation timed out after %ld milliseconds with %"
!             FORMAT_OFF_T " bytes received",
!             data->set.timeout, k->bytecount);
      }
-     return CURLE_OPERATION_TIMEDOUT;
    }
! 
!   if(!k->keepon) {
      /*
       * The transfer has been performed. Just make some general checks before
       * returning.
--- 1062,1083 ----
    if(result)
      return result;
  
!   if(k->keepon) {
!     if(data->set.timeout &&
!        (Curl_tvdiff(k->now, k->start) >= data->set.timeout)) {
!       if(k->size != -1) {
!         failf(data, "Operation timed out after %ld milliseconds with %"
!               FORMAT_OFF_T " out of %" FORMAT_OFF_T " bytes received",
!               data->set.timeout, k->bytecount, k->size);
!       } else {
!         failf(data, "Operation timed out after %ld milliseconds with %"
!               FORMAT_OFF_T " bytes received",
!               data->set.timeout, k->bytecount);
!       }
!       return CURLE_OPERATION_TIMEDOUT;
      }
    }
!   else {
      /*
       * The transfer has been performed. Just make some general checks before
       * returning.
