return 0;
}
-int imap_close_connection (CONTEXT *ctx)
+void imap_logout (CONNECTION *conn)
{
char buf[LONG_STRING];
char seq[8];
+ imap_make_sequence (seq, sizeof (seq));
+ snprintf (buf, sizeof (buf), "%s LOGOUT\r\n", seq);
+ mutt_socket_write (conn, buf);
+ do
+ {
+ if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
+ break;
+ }
+ while (mutt_strncmp (seq, buf, SEQLEN) != 0);
+}
+
+int imap_close_connection (CONTEXT *ctx)
+{
dprint (1, (debugfile, "imap_close_connection(): closing connection\n"));
/* if the server didn't shut down on us, close the connection gracefully */
if (CTX_DATA->status != IMAP_BYE)
{
mutt_message _("Closing connection to IMAP server...");
- imap_make_sequence (seq, sizeof (seq));
- snprintf (buf, sizeof (buf), "%s LOGOUT\r\n", seq);
- mutt_socket_write (CTX_DATA->conn, buf);
- do
- {
- if (mutt_socket_readln (buf, sizeof (buf), CTX_DATA->conn) < 0)
- break;
- }
- while (mutt_strncmp (seq, buf, SEQLEN) != 0);
+ imap_logout (CTX_DATA->conn);
mutt_clear_error ();
}
mutt_socket_close (CTX_DATA->conn);
char** name, int* noselect, int* noinferiors, char* delim);
int imap_read_bytes (FILE* fp, CONNECTION* conn, long bytes);
int imap_reopen_mailbox (CONTEXT *ctx, int *index_hint);
+void imap_logout (CONNECTION* conn);
/* auth.c */
int imap_authenticate (IMAP_DATA *idata, CONNECTION *conn);
void imap_logout_all (void)
{
CONNECTION* conn;
- char buf[SHORT_STRING];
- char seq[SEQLEN+1];
conn = Connections;
mutt_message (_("Closing connection to %s..."),
conn->mx.host);
- imap_make_sequence (seq, sizeof (seq));
- snprintf (buf, sizeof (buf), "%s LOGOUT\r\n", seq);
-
- mutt_socket_write (conn, buf);
-
- do
- {
- if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
- break;
- }
- while (mutt_strncmp (buf, seq, SEQLEN) != 0);
+ imap_logout (conn);
+
mutt_clear_error ();
mutt_socket_close (conn);