Jofell Gallardo posted a libcurl log using FTP that exposed a bug which made

a control connection that was deemed "dead" to yet be re-used in a following
request. We must make sure the connection gets closed on this situation.
This commit is contained in:
Daniel Stenberg 2007-07-17 20:59:53 +00:00
parent 98b9349be7
commit 1d728aae2a
3 changed files with 8 additions and 2 deletions

View File

@ -6,6 +6,11 @@
Changelog Changelog
Daniel S (17 July 2007)
- Jofell Gallardo posted a libcurl log using FTP that exposed a bug which made
a control connection that was deemed "dead" to yet be re-used in a following
request.
Daniel S (13 July 2007) Daniel S (13 July 2007)
- Colin Hogben filed bug report #1750274 - Colin Hogben filed bug report #1750274
(http://curl.haxx.se/bug/view.cgi?id=1750274) and submitted a patch for the (http://curl.haxx.se/bug/view.cgi?id=1750274) and submitted a patch for the

View File

@ -22,6 +22,7 @@ This release includes the following bugfixes:
o CONNECT endless loop o CONNECT endless loop
o krb5 support builds with Heimdal o krb5 support builds with Heimdal
o added returned error string for connection refused case o added returned error string for connection refused case
o re-use of dead control connections
This release includes the following known bugs: This release includes the following known bugs:
@ -39,6 +40,6 @@ This release would not have looked like this without help, code, reports and
advice from friends like these: advice from friends like these:
Dan Fandrich, Song Ma, Daniel Black, Giancarlo Formicuccia, Shmulik Regev, Dan Fandrich, Song Ma, Daniel Black, Giancarlo Formicuccia, Shmulik Regev,
Daniel Cater, Colin Hogben Daniel Cater, Colin Hogben, Jofell Gallardo
Thanks! (and sorry if I forgot to mention someone) Thanks! (and sorry if I forgot to mention someone)

View File

@ -3137,7 +3137,7 @@ CURLcode Curl_ftp_done(struct connectdata *conn, CURLcode status, bool premature
if(!nread && (CURLE_OPERATION_TIMEDOUT == result)) { if(!nread && (CURLE_OPERATION_TIMEDOUT == result)) {
failf(data, "control connection looks dead"); failf(data, "control connection looks dead");
ftpc->ctl_valid = FALSE; /* mark control connection as bad */ ftpc->ctl_valid = FALSE; /* mark control connection as bad */
return result; conn->bits.close = TRUE; /* mark for closure */
} }
if(result) if(result)