diff --git a/lib/ftp.c b/lib/ftp.c
index f50918694bddbec31f784dc8e48e6951ccfca6ce..44dcf934001e55d966941b6eb82623b37dc0ccfb 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;