Jofell Gallardo posted a libcurl log using FTP that exposed a bug which made
authorDaniel Stenberg <daniel@haxx.se>
Tue, 17 Jul 2007 20:59:53 +0000 (20:59 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 17 Jul 2007 20:59:53 +0000 (20:59 +0000)
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.

CHANGES
RELEASE-NOTES
lib/ftp.c

diff --git a/CHANGES b/CHANGES
index e5be0fb..570dcba 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,11 @@
 
                                   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)
 - Colin Hogben filed bug report #1750274
   (http://curl.haxx.se/bug/view.cgi?id=1750274) and submitted a patch for the
index 7f1ccf4..6facec9 100644 (file)
@@ -22,6 +22,7 @@ This release includes the following bugfixes:
  o CONNECT endless loop
  o krb5 support builds with Heimdal
  o added returned error string for connection refused case
+ o re-use of dead control connections
 
 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:
 
  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)
index 61e7958..dcea9ad 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -3137,7 +3137,7 @@ CURLcode Curl_ftp_done(struct connectdata *conn, CURLcode status, bool premature
     if(!nread && (CURLE_OPERATION_TIMEDOUT == result)) {
       failf(data, "control connection looks dead");
       ftpc->ctl_valid = FALSE; /* mark control connection as bad */
-      return result;
+      conn->bits.close = TRUE; /* mark for closure */
     }
 
     if(result)