From: Timo Sirainen Date: Fri, 24 Jul 2009 19:58:08 +0000 (-0400) Subject: imap delete: Use mailbox_backends_equal() for finding if we're deleting selected... X-Git-Tag: 2.0.alpha1~401 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a3e8ffac622b823d4df2255508b3f29bc88fda39;p=thirdparty%2Fdovecot%2Fcore.git imap delete: Use mailbox_backends_equal() for finding if we're deleting selected mailbox. --HG-- branch : HEAD --- diff --git a/src/imap/cmd-delete.c b/src/imap/cmd-delete.c index e78a98e980..7e3962eebc 100644 --- a/src/imap/cmd-delete.c +++ b/src/imap/cmd-delete.c @@ -7,7 +7,6 @@ bool cmd_delete(struct client_command_context *cmd) { struct client *client = cmd->client; struct mail_namespace *ns; - struct mail_storage *storage; struct mailbox *mailbox; const char *name; @@ -25,16 +24,14 @@ bool cmd_delete(struct client_command_context *cmd) if (ns == NULL) return TRUE; - mailbox = client->mailbox; - if (mailbox != NULL && mailbox_get_namespace(mailbox) == ns && - strcmp(mailbox_get_name(mailbox), name) == 0) { + mailbox = mailbox_alloc(ns->list, name, NULL, 0); + if (client->mailbox != NULL && + mailbox_backends_equal(mailbox, client->mailbox)) { /* deleting selected mailbox. close it first */ client_search_updates_free(client); - storage = mailbox_get_storage(mailbox); - client->mailbox = NULL; - - mailbox_close(&mailbox); + mailbox_close(&client->mailbox); } + mailbox_close(&mailbox); if ((client->workarounds & WORKAROUND_TB_EXTRA_MAILBOX_SEP) != 0 && *name != '\0' &&