From 4838d196fdbfcc3e8779ff4416ec5d0d35561172 Mon Sep 17 00:00:00 2001 From: Steve Holme Date: Sat, 9 Mar 2013 11:55:48 +0000 Subject: [PATCH] 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. --- lib/imap.c | 12 +++++------- lib/pop3.c | 12 +++++------- lib/smtp.c | 10 ++++------ 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);