aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSteve Holme <steve_holme@hotmail.com>2013-03-09 11:55:48 +0000
committerSteve Holme <steve_holme@hotmail.com>2013-03-09 11:55:48 +0000
commit4838d196fdbfcc3e8779ff4416ec5d0d35561172 (patch)
tree72ba42ba584036fb494c396a686143579c13a9c1 /lib
parentf691f9609c314c794cf51b9b906ca8fc4f553a73 (diff)
email: Simplified the logout / quit functions
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/imap.c12
-rw-r--r--lib/pop3.c12
-rw-r--r--lib/smtp.c10
3 files changed, 14 insertions, 20 deletions
diff --git a/lib/imap.c b/lib/imap.c
index 6ce6b12ec..73ace8576 100644
--- a/lib/imap.c
+++ b/lib/imap.c
@@ -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);
diff --git a/lib/pop3.c b/lib/pop3.c
index 4c008cafb..88c8f2bc7 100644
--- a/lib/pop3.c
+++ b/lib/pop3.c
@@ -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);
diff --git a/lib/smtp.c b/lib/smtp.c
index c9669dafc..8367b8925 100644
--- a/lib/smtp.c
+++ b/lib/smtp.c
@@ -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);