pop3: Fixed continuous wait when using --ftp-list
authorSteve Holme <steve_holme@hotmail.com>
Tue, 12 Mar 2013 13:09:03 +0000 (13:09 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Tue, 12 Mar 2013 14:10:25 +0000 (14:10 +0000)
Don't initiate a transfer when using --ftp-list.

lib/pop3.c

index 80cf139b39e2c9ebc2c92c8991364df20aaf02a5..34c5964a129589df4a4e53fc9d6415299e21e756 100644 (file)
@@ -1085,6 +1085,7 @@ static CURLcode pop3_state_command_resp(struct connectdata *conn,
 {
   CURLcode result = CURLE_OK;
   struct SessionHandle *data = conn->data;
+  struct POP3 *pop3 = data->state.proto.pop3;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
   struct pingpong *pp = &pop3c->pp;
 
@@ -1105,25 +1106,27 @@ static CURLcode pop3_state_command_resp(struct connectdata *conn,
      the strip counter here so that these bytes won't be delivered. */
   pop3c->strip = 2;
 
-  /* POP3 download */
-  Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, NULL, -1, NULL);
+  if(pop3->transfer == FTPTRANSFER_BODY) {
+    /* POP3 download */
+    Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, NULL, -1, NULL);
 
-  if(pp->cache) {
-    /* The header "cache" contains a bunch of data that is actually body
-       content so send it as such. Note that there may even be additional
-       "headers" after the body */
+    if(pp->cache) {
+      /* The header "cache" contains a bunch of data that is actually body
+         content so send it as such. Note that there may even be additional
+         "headers" after the body */
 
-    if(!data->set.opt_no_body) {
-      result = Curl_pop3_write(conn, pp->cache, pp->cache_size);
-      if(result)
-        return result;
-    }
+      if(!data->set.opt_no_body) {
+        result = Curl_pop3_write(conn, pp->cache, pp->cache_size);
+        if(result)
+          return result;
+      }
 
-    /* Free the cache */
-    Curl_safefree(pp->cache);
+      /* Free the cache */
+      Curl_safefree(pp->cache);
 
-    /* Reset the cache size */
-    pp->cache_size = 0;
+      /* Reset the cache size */
+      pp->cache_size = 0;
+    }
   }
 
   /* End of DO phase */