email: Simplified the logout / quit functions
authorSteve Holme <steve_holme@hotmail.com>
Sat, 9 Mar 2013 11:55:48 +0000 (11:55 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sat, 9 Mar 2013 11:55:48 +0000 (11:55 +0000)
Moved the blocking state machine to the disconnect functions so that the
logout / quit functions are only responsible for sending the actual
command needed to logout or quit.

Additionally removed the hard return on failure.

lib/imap.c
lib/pop3.c
lib/smtp.c

index 6ce6b12..73ace85 100644 (file)
@@ -1950,13 +1950,10 @@ static CURLcode imap_logout(struct connectdata *conn)
   CURLcode result = CURLE_OK;
 
   /* Send the LOGOUT command */
-  result = imap_sendf(conn, "LOGOUT", NULL);
-  if(result)
-    return result;
+  result = imap_sendf(conn, "LOGOUT");
 
-  state(conn, IMAP_LOGOUT);
-
-  result = imap_block_statemach(conn);
+  if(!result)
+    state(conn, IMAP_LOGOUT);
 
   return result;
 }
@@ -1979,7 +1976,8 @@ static CURLcode imap_disconnect(struct connectdata *conn, bool dead_connection)
   /* The IMAP session may or may not have been allocated/setup at this
      point! */
   if(!dead_connection && imapc->pp.conn)
-    (void)imap_logout(conn); /* ignore errors on LOGOUT */
+    if(!imap_logout(conn))
+      (void)imap_block_statemach(conn); /* ignore errors on LOGOUT */
 
   /* Disconnect from the server */
   Curl_pp_disconnect(&imapc->pp);
index 4c008ca..88c8f2b 100644 (file)
@@ -1470,13 +1470,10 @@ static CURLcode pop3_quit(struct connectdata *conn)
   CURLcode result = CURLE_OK;
 
   /* Send the QUIT command */
-  result = Curl_pp_sendf(&conn->proto.pop3c.pp, "QUIT", NULL);
-  if(result)
-    return result;
+  result = Curl_pp_sendf(&conn->proto.pop3c.pp, "QUIT");
 
-  state(conn, POP3_QUIT);
-
-  result = pop3_block_statemach(conn);
+  if(!result)
+    state(conn, POP3_QUIT);
 
   return result;
 }
@@ -1500,7 +1497,8 @@ static CURLcode pop3_disconnect(struct connectdata *conn,
   /* The POP3 session may or may not have been allocated/setup at this
      point! */
   if(!dead_connection && pop3c->pp.conn)
-    (void)pop3_quit(conn); /* ignore errors on QUIT */
+    if(!pop3_quit(conn))
+      (void)pop3_block_statemach(conn); /* ignore errors on QUIT */
 
   /* Disconnect from the server */
   Curl_pp_disconnect(&pop3c->pp);
index c9669da..8367b89 100644 (file)
@@ -1501,12 +1501,9 @@ static CURLcode smtp_quit(struct connectdata *conn)
 
   /* Send the QUIT command */
   result = Curl_pp_sendf(&conn->proto.smtpc.pp, "QUIT");
-  if(result)
-    return result;
 
-  state(conn, SMTP_QUIT);
-
-  result = smtp_block_statemach(conn);
+  if(!result)
+    state(conn, SMTP_QUIT);
 
   return result;
 }
@@ -1530,7 +1527,8 @@ static CURLcode smtp_disconnect(struct connectdata *conn,
   /* The SMTP session may or may not have been allocated/setup at this
      point! */
   if(!dead_connection && smtpc->pp.conn)
-    (void)smtp_quit(conn); /* ignore errors on QUIT */
+    if(!smtp_quit(conn))
+      (void)smtp_block_statemach(conn); /* ignore errors on QUIT */
 
   /* Disconnect from the server */
   Curl_pp_disconnect(&smtpc->pp);