From de7a14003c0ef455e074cc9629bf9faae3474a7e Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 19 May 2009 20:54:31 +0000 Subject: [PATCH] - Kamil Dudka brought the patch from the Redhat bug entry https://bugzilla.redhat.com/show_bug.cgi?id=427966 which was libcurl closing a bad file descriptor when closing down the FTP data connection. Caolan McNamara seems to be the original author of it. --- CHANGES | 6 ++++++ RELEASE-NOTES | 4 ++-- lib/ftp.c | 7 ++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index c985a4e..2b26a05 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,12 @@ Changelog +Daniel Stenberg (19 May 2009) +- Kamil Dudka brought the patch from the Redhat bug entry + https://bugzilla.redhat.com/show_bug.cgi?id=427966 which was libcurl closing + a bad file descriptor when closing down the FTP data connection. Caolan + McNamara seems to be the original author of it. + Version 7.19.5 (18 May 2009) Daniel Stenberg (17 May 2009) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 91b5b67..6388ea5 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -13,7 +13,7 @@ This release includes the following changes: This release includes the following bugfixes: - o + o crash on bad socket close with FTP This release includes the following known bugs: @@ -22,6 +22,6 @@ This release includes the following known bugs: This release would not have looked like this without help, code, reports and advice from friends like these: - + Kamil Dudka, Caolan McNamara Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/ftp.c b/lib/ftp.c index ebd04f9..0bd0771 100644 --- a/lib/ftp.c +++ b/lib/ftp.c @@ -3251,9 +3251,10 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status, /* Note that we keep "use" set to TRUE since that (next) connection is still requested to use SSL */ } - sclose(conn->sock[SECONDARYSOCKET]); - - conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD; + if(CURL_SOCKET_BAD != conn->sock[SECONDARYSOCKET]) { + sclose(conn->sock[SECONDARYSOCKET]); + conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD; + } } if((ftp->transfer == FTPTRANSFER_BODY) && ftpc->ctl_valid && -- 2.7.4