diff --git a/CHANGES b/CHANGES index 452e46bd6625fa2d9872f4b13c92a394eeb1d0d6..0fd2fe2a52d2874c5413f6f6ea4df8d03fce5081 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,10 @@ Daniel (21 October 2005) +- "Ofer" reported a problem when libcurl re-used a connection and failed to do + it, it could then accidentally actually crash. Presumably, this concerns FTP + connections. http://curl.haxx.se/bug/view.cgi?id=1330310 + - Temprimus improved the MSVC makefile so that the static debug SSL libs are linked to the executable and not to the libcurld.lib http://curl.haxx.se/bug/view.cgi?id=1326676 diff --git a/lib/url.c b/lib/url.c index 3f11b3e7518b34d978fb6eeece9904f8c0db947b..c4f3fbf3d4a445b1c7d96d26ec30dcc8a9265284 100644 --- a/lib/url.c +++ b/lib/url.c @@ -3844,7 +3844,14 @@ CURLcode Curl_do(struct connectdata **connp, bool *done) /* conn may no longer be a good pointer */ - if(CURLE_OK == result) { + /* + * According to bug report #1330310. We need to check for + * CURLE_SEND_ERROR here as well. I figure this could happen when the + * request failed on a FTP connection and thus Curl_done() itself tried + * to use the connection (again). Slight Lack of feedback in the report, + * but I don't think this extra check can do much harm. + */ + if((CURLE_OK == result) || (CURLE_SEND_ERROR == result)) { bool async; bool protocol_done = TRUE;