--- /dev/null
+--- lib/transfer.c Wed Sep 12 14:02:12 2001
++++ lib/transfer.c.mis Sat Oct 27 15:28:06 2001
+@@ -287,6 +287,7 @@
+ interval.tv_sec = 1;
+ interval.tv_usec = 0;
+
++ start = Curl_tvnow();
+ switch (select (maxfd, &readfd, &writefd, NULL, &interval)) {
+ case -1: /* select() error, stop reading */
+ #ifdef EINTR
+--- lib/ftp.c Mon Sep 24 14:37:19 2001
++++ lib/ftp.c.mis Sat Oct 27 15:49:30 2001
+@@ -190,15 +190,9 @@
+ if (ftpcode)
+ *ftpcode = 0; /* 0 for errors */
+
+- if(data->set.timeout) {
+- /* if timeout is requested, find out how much remaining time we have */
+- timeout = data->set.timeout - /* timeout time */
+- (Curl_tvlong(Curl_tvnow()) - Curl_tvlong(conn->now)); /* spent time */
+- if(timeout <=0 ) {
+- failf(data, "Transfer aborted due to timeout");
+- return -SELECT_TIMEOUT; /* already too little time */
+- }
+- }
++ if(data->set.timeout)
++ timeout = data->set.timeout;
++
+
+ FD_ZERO (&readfd); /* clear it */
+ FD_SET (sockfd, &readfd); /* read socket */