From c001ed53fa89f203e3d6aa402e9a9126dc34f5b1 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Sat, 16 Sep 2006 20:57:59 +0000
Subject: [PATCH] Armel Asselin - When the easy handle is removed from the
 multi while libcurl is still trying to resolve the host name, it seems that
 the ftp struct is not yet initialized, but the removal action calls
 Curl_done() which calls Curl_ftp_done. So we simply return success from there
 if no ftp pointer is set.

---
 lib/ftp.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/lib/ftp.c b/lib/ftp.c
index f50918694b..44dcf93400 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -2954,6 +2954,15 @@ CURLcode Curl_ftp_done(struct connectdata *conn, CURLcode status)
   char *path_to_use = data->reqdata.path;
   struct Curl_transfer_keeper *k = &data->reqdata.keep;
 
+  if(!ftp)
+    /* When the easy handle is removed from the multi while libcurl is still
+     * trying to resolve the host name, it seems that the ftp struct is not
+     * yet initialized, but the removal action calls Curl_done() which calls
+     * this function. So we simply return success if no ftp pointer is set.
+     */
+    return CURLE_OK;
+
+
   if (conn->sec_path)
     path_to_use = conn->sec_path;
 
-- 
GitLab