From 5e2fcc1f74fa5d793e7e3c6e3384879327705bdd Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 21 Jan 2004 08:50:08 +0000 Subject: use the proper timecond defines, not the obsolete ones I've removed! ;-) The initial QUIT-sending code is added, but not yet used due to the issues previously mentioned on the mailing list. --- lib/ftp.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/lib/ftp.c b/lib/ftp.c index c5e2dc4aa..2b3490ce1 100644 --- a/lib/ftp.c +++ b/lib/ftp.c @@ -2136,7 +2136,7 @@ CURLcode ftp_perform(struct connectdata *conn, if(data->set.timecondition) { if((data->info.filetime > 0) && (data->set.timevalue > 0)) { switch(data->set.timecondition) { - case TIMECOND_IFMODSINCE: + case CURL_TIMECOND_IFMODSINCE: default: if(data->info.filetime < data->set.timevalue) { infof(data, "The requested document is not new enough\n"); @@ -2144,7 +2144,7 @@ CURLcode ftp_perform(struct connectdata *conn, return CURLE_OK; } break; - case TIMECOND_IFUNMODSINCE: + case CURL_TIMECOND_IFUNMODSINCE: if(data->info.filetime > data->set.timevalue) { infof(data, "The requested document is not old enough\n"); ftp->no_transfer = TRUE; /* mark this to not transfer data */ @@ -2409,6 +2409,29 @@ CURLcode Curl_ftpsendf(struct connectdata *conn, return res; } +/*********************************************************************** + * + * Curl_ftp_quit() + * + * This should be called before calling sclose() on an ftp control connection + * (not data connections). We should then wait for the response from the + * server before returning. The calling code should then try to close the + * connection. + * + */ +CURLcode Curl_ftp_quit(struct connectdata *conn) +{ + int nread; + int ftpcode; + CURLcode ret; + + ret = Curl_ftpsendf(conn, "%s", "QUIT"); + if(CURLE_OK == ret) + ret = Curl_GetFTPResponse(&nread, conn, &ftpcode); + + return ret; +} + /*********************************************************************** * * Curl_ftp_disconnect() @@ -2420,6 +2443,16 @@ CURLcode Curl_ftp_disconnect(struct connectdata *conn) { struct FTP *ftp= conn->proto.ftp; +#if 0 + /* We cannot send quit unconditionally. If this connection is stale or + bad in any way, sending quit and waiting around here will make the + disconnect wait in vain and cause more problems than we need to. + + Until fixed, we keep this #if 0'ed. To be fixed in 7.11.1. Stay tuned. + */ + (void)Curl_ftp_quit(conn); /* ignore errors on the QUIT */ +#endif + /* The FTP session may or may not have been allocated/setup at this point! */ if(ftp) { if(ftp->entrypath) -- cgit v1.2.3