X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=imap%2Fcommand.c;h=40a1cf316ff86df8b30cb58d31182ab5508eb49f;hb=82d5d8ffc8cd4cf837736187eba9ddfd8b2e2f7f;hp=0a52ca4b0e2513b427c009b232d8034e8292cf22;hpb=814a01519c9605d479201b99eb16c97b0ad8635d;p=apps%2Fmadmutt.git diff --git a/imap/command.c b/imap/command.c index 0a52ca4..40a1cf3 100644 --- a/imap/command.c +++ b/imap/command.c @@ -70,7 +70,7 @@ int imap_cmd_start (IMAP_DATA * idata, const char *cmd) cmd_make_sequence (idata); /* seq, space, cmd, \r\n\0 */ - outlen = safe_strlen (idata->cmd.seq) + safe_strlen (cmd) + 4; + outlen = mutt_strlen (idata->cmd.seq) + mutt_strlen (cmd) + 4; out = (char *) safe_malloc (outlen); snprintf (out, outlen, "%s %s\r\n", idata->cmd.seq, cmd); @@ -168,6 +168,12 @@ int imap_exec (IMAP_DATA * idata, const char *cmd, int flags) int outlen; int rc; + if (!idata) { + mutt_error (_("No mailbox is open.")); + mutt_sleep (1); + return (-1); + } + if (idata->status == IMAP_FATAL) { cmd_handle_fatal (idata); return -1; @@ -176,7 +182,7 @@ int imap_exec (IMAP_DATA * idata, const char *cmd, int flags) /* create sequence for command */ cmd_make_sequence (idata); /* seq, space, cmd, \r\n\0 */ - outlen = safe_strlen (idata->cmd.seq) + safe_strlen (cmd) + 4; + outlen = mutt_strlen (idata->cmd.seq) + mutt_strlen (cmd) + 4; out = (char *) safe_malloc (outlen); snprintf (out, outlen, "%s %s\r\n", idata->cmd.seq, cmd); @@ -273,8 +279,8 @@ static void cmd_handle_fatal (IMAP_DATA * idata) idata->status = IMAP_FATAL; if ((idata->state == IMAP_SELECTED) && - (idata->reopen & IMAP_REOPEN_ALLOW) && !idata->ctx->closing) { - /*mx_fastclose_mailbox (idata->ctx); */ + (idata->reopen & IMAP_REOPEN_ALLOW)) { + /* mx_fastclose_mailbox (idata->ctx); */ mutt_error (_("Mailbox closed")); mutt_sleep (1); idata->state = IMAP_DISCONNECTED; @@ -284,6 +290,7 @@ static void cmd_handle_fatal (IMAP_DATA * idata) if (idata->state != IMAP_SELECTED) { idata->state = IMAP_DISCONNECTED; + mutt_socket_close (idata->conn); idata->status = 0; } } @@ -353,17 +360,9 @@ static int cmd_handle_untagged (IMAP_DATA * idata) s += 3; SKIPWS (s); mutt_error ("%s", s); - idata->status = IMAP_BYE; - - /*if (imap_reconnect(idata->ctx)!=0) { - if (idata->state == IMAP_SELECTED) - mx_fastclose_mailbox (idata->ctx); *//* XXX memleak? */ - mutt_socket_close (idata->conn); - idata->state = IMAP_DISCONNECTED; + mutt_sleep (2); + cmd_handle_fatal (idata); return -1; - /*} else { - return 0; - } */ } else if (option (OPTIMAPSERVERNOISE) && (ascii_strncasecmp ("NO", s, 2) == 0)) {