Index: lib/multi.c
===================================================================
RCS file: /repository/curl/lib/multi.c,v
retrieving revision 1.43
diff -u -r1.43 multi.c
--- lib/multi.c	5 Feb 2004 09:37:04 -0000	1.43
+++ lib/multi.c	4 Mar 2004 16:04:49 -0000
@@ -331,13 +331,16 @@
         char *gotourl;
         Curl_posttransfer(easy->easy_handle);
 
-        gotourl = strdup(easy->easy_handle->change.url);
-        easy->easy_handle->change.url_changed = FALSE;
-        easy->result = Curl_follow(easy->easy_handle, gotourl);
-        if(CURLE_OK == easy->result)
-          easy->state = CURLM_STATE_CONNECT;
-        else
-          free(gotourl);
+        easy->result = Curl_done(easy->easy_conn);
+        if(CURLE_OK == easy->result) {
+          gotourl = strdup(easy->easy_handle->change.url);
+          easy->easy_handle->change.url_changed = FALSE;
+          easy->result = Curl_follow(easy->easy_handle, gotourl);
+          if(CURLE_OK == easy->result)
+            easy->state = CURLM_STATE_CONNECT;
+          else
+            free(gotourl);
+        }
       }
     
       easy->easy_handle->change.url_changed = FALSE;
@@ -503,7 +506,9 @@
           if(easy->easy_conn->newurl) {
             char *newurl = easy->easy_conn->newurl;
             easy->easy_conn->newurl = NULL;
-            easy->result = Curl_follow(easy->easy_handle, newurl);
+            easy->result = Curl_done(easy->easy_conn);
+            if(easy->result == CURLE_OK)
+              easy->result = Curl_follow(easy->easy_handle, newurl);
             if(CURLE_OK == easy->result) {
               easy->state = CURLM_STATE_CONNECT;
               result = CURLM_CALL_MULTI_PERFORM;
