X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=imap%2Fcommand.c;h=f76cff6f314db417aa2eb8bd3d6a9abd97f078f9;hb=666a29207bb781f47ec85f6a3c3cdeb554b30c21;hp=ba9d66631cdc610c5216d7a6c2aff6087cccccfe;hpb=3f3ce3e32da45b2626dfa40a994cb37ca4021e5b;p=apps%2Fmadmutt.git diff --git a/imap/command.c b/imap/command.c index ba9d666..f76cff6 100644 --- a/imap/command.c +++ b/imap/command.c @@ -70,13 +70,13 @@ int imap_cmd_start (IMAP_DATA * idata, const char *cmd) cmd_make_sequence (idata); /* seq, space, cmd, \r\n\0 */ - outlen = mutt_strlen (idata->cmd.seq) + mutt_strlen (cmd) + 4; - out = (char *) safe_malloc (outlen); + outlen = str_len (idata->cmd.seq) + str_len (cmd) + 4; + out = (char *) mem_malloc (outlen); snprintf (out, outlen, "%s %s\r\n", idata->cmd.seq, cmd); rc = mutt_socket_write (idata->conn, out); - FREE (&out); + mem_free (&out); return (rc < 0) ? IMAP_CMD_BAD : 0; } @@ -100,7 +100,7 @@ int imap_cmd_step (IMAP_DATA * idata) * line */ do { if (len == cmd->blen) { - safe_realloc (&cmd->buf, cmd->blen + IMAP_CMD_BUFSIZE); + mem_realloc (&cmd->buf, cmd->blen + IMAP_CMD_BUFSIZE); cmd->blen = cmd->blen + IMAP_CMD_BUFSIZE; debug_print (3, ("grew buffer to %u bytes\n", cmd->blen)); } @@ -121,7 +121,7 @@ int imap_cmd_step (IMAP_DATA * idata) /* don't let one large string make cmd->buf hog memory forever */ if ((cmd->blen > IMAP_CMD_BUFSIZE) && (len <= IMAP_CMD_BUFSIZE)) { - safe_realloc (&cmd->buf, IMAP_CMD_BUFSIZE); + mem_realloc (&cmd->buf, IMAP_CMD_BUFSIZE); cmd->blen = IMAP_CMD_BUFSIZE; debug_print (3, ("shrank buffer to %u bytes\n", cmd->blen)); } @@ -182,14 +182,14 @@ 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 = mutt_strlen (idata->cmd.seq) + mutt_strlen (cmd) + 4; - out = (char *) safe_malloc (outlen); + outlen = str_len (idata->cmd.seq) + str_len (cmd) + 4; + out = (char *) mem_malloc (outlen); snprintf (out, outlen, "%s %s\r\n", idata->cmd.seq, cmd); rc = mutt_socket_write_d (idata->conn, out, flags & IMAP_CMD_PASS ? IMAP_LOG_PASS : IMAP_LOG_CMD); - FREE (&out); + mem_free (&out); if (rc < 0) { cmd_handle_fatal (idata); @@ -279,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; @@ -290,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; } } @@ -359,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)) { @@ -401,8 +394,8 @@ static void cmd_parse_capabilities (IMAP_DATA * idata, char *s) debug_print (2, ("Handling CAPABILITY\n")); s = imap_next_word (s); - FREE (&idata->capstr); - idata->capstr = safe_strdup (s); + mem_free (&idata->capstr); + idata->capstr = str_dup (s); memset (idata->capabilities, 0, sizeof (idata->capabilities));