]> granicus.if.org Git - curl/commitdiff
use the proper timecond defines, not the obsolete ones I've removed! ;-)
authorDaniel Stenberg <daniel@haxx.se>
Wed, 21 Jan 2004 08:50:08 +0000 (08:50 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 21 Jan 2004 08:50:08 +0000 (08:50 +0000)
The initial QUIT-sending code is added, but not yet used due to the issues
previously mentioned on the mailing list.

lib/ftp.c

index c5e2dc4aa3d7b70f099915265de6047dd695c6ff..2b3490ce16c86cb547d03162f2d077bb43fc9c76 100644 (file)
--- 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)