diff --git a/lib/url.c b/lib/url.c
index 8511ffe4c924b410bc3ea4fd0cbc5c90c4f596aa..95d024d52f8de46fe92f20596d7f4bf490ce1810 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -5347,12 +5347,13 @@ CURLcode Curl_do(struct connectdata **connp, bool *done)
 
           if(result == CURLE_OK) {
             /* ... finally back to actually retry the DO phase */
+            conn = *connp; /* re-assign conn since Curl_reconnect_request
+                              creates a new connection */
             result = conn->handler->do_it(conn, done);
           }
         }
-        else {
+        else
           return result;
-        }
     }
 
     if((result == CURLE_OK) && *done)