if (c <= 0)
{
dprint (1, (debugfile, "imap_cmd_step: Error reading server response.\n"));
- cmd_handle_fatal (idata);
+ /* cmd_handle_fatal (idata); */
return IMAP_CMD_BAD;
}
rc = imap_cmd_step (idata);
while (rc == IMAP_CMD_CONTINUE);
+ if (rc == IMAP_CMD_BAD) {
+ if (imap_reconnect(idata->ctx)!=0) {
+ return -1;
+ }
+ return 0;
+ }
+
if (rc == IMAP_CMD_NO && (flags & IMAP_CMD_FAIL_OK))
return -2;
(idata->reopen & IMAP_REOPEN_ALLOW) &&
!idata->ctx->closing)
{
- mx_fastclose_mailbox (idata->ctx);
- /*mutt_error (_("Mailbox closed"));
+ /*mx_fastclose_mailbox (idata->ctx);*/
+ mutt_error (_("Mailbox closed"));
mutt_sleep (1);
- */
idata->state = IMAP_DISCONNECTED;
- imap_reconnect(idata->ctx);
+ if (imap_reconnect(idata->ctx)!=0)
+ mx_fastclose_mailbox(idata->ctx);
}
if (idata->state != IMAP_SELECTED)
SKIPWS (s);
mutt_error ("%s", s);
idata->status = IMAP_BYE;
- if (idata->state == IMAP_SELECTED)
- mx_fastclose_mailbox (idata->ctx);
- mutt_socket_close (idata->conn);
- idata->state = IMAP_DISCONNECTED;
- return -1;
+ /*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;
+ return -1;
+ /*} else {
+ return 0;
+ } */
}
else if (option (OPTIMAPSERVERNOISE) && (ascii_strncasecmp ("NO", s, 2) == 0))
{
/* cmd_make_sequence: make a tag suitable for starting an IMAP command */
static void cmd_make_sequence (IMAP_DATA* idata)
{
- snprintf (idata->cmd.seq, sizeof (idata->cmd.seq), "a%04d", idata->seqno++);
+ snprintf (idata->cmd.seq, sizeof (idata->cmd.seq), "a%04u", idata->seqno++);
if (idata->seqno > 9999)
idata->seqno = 0;
msgno = atoi (s);
+ if (msgno <= idata->ctx->msgcount)
/* see cmd_parse_expunge */
- for (cur = 0; cur < idata->ctx->msgcount; cur++)
- {
- h = idata->ctx->hdrs[cur];
-
- if (h->active && h->index+1 == msgno)
+ for (cur = 0; cur < idata->ctx->msgcount; cur++)
{
- dprint (2, (debugfile, "Message UID %d updated\n", HEADER_DATA(h)->uid));
- break;
+ h = idata->ctx->hdrs[cur];
+
+ if (h->active && h->index+1 == msgno)
+ {
+ dprint (2, (debugfile, "Message UID %d updated\n", HEADER_DATA(h)->uid));
+ break;
+ }
+
+ h = NULL;
}
-
- h = NULL;
- }
if (!h)
{