From 6b5dc725756984da68da5c3866c6bb8ef10527cb Mon Sep 17 00:00:00 2001
From: Pasha Kuznetsov <b4uuzv3dgk@snkmail.com>
Date: Sat, 18 Dec 2010 22:35:37 +0100
Subject: [PATCH] Curl_do: avoid using stale conn pointer

Since the original `conn' pointer was used after the `connectdata' it
points to has been closed/cleaned up by Curl_reconnect_request it caused
a crash. We must make sure to use the newly created connection instead!

URL: http://curl.haxx.se/mail/lib-2010-12/0202.html
---
 lib/url.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/url.c b/lib/url.c
index 8511ffe4c9..95d024d52f 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)
-- 
GitLab