From: Daniel Stenberg Date: Sat, 16 Sep 2006 20:57:59 +0000 (+0000) Subject: Armel Asselin - When the easy handle is removed from the multi while libcurl X-Git-Tag: curl-7_16_0~165 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c001ed53fa89f203e3d6aa402e9a9126dc34f5b1;p=thirdparty%2Fcurl.git 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. --- 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;