From: Markus Valentin Date: Tue, 25 May 2021 14:09:25 +0000 (+0200) Subject: imapc: Extract imapc_mailbox_name_equals from imapc_untagged_status X-Git-Tag: 2.3.15~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=369daa833d1e39629cc92da3ea7d2b9b5cf31610;p=thirdparty%2Fdovecot%2Fcore.git imapc: Extract imapc_mailbox_name_equals from imapc_untagged_status --- diff --git a/src/lib-storage/index/imapc/imapc-mailbox.c b/src/lib-storage/index/imapc/imapc-mailbox.c index ce517693fa..ed505afab1 100644 --- a/src/lib-storage/index/imapc/imapc-mailbox.c +++ b/src/lib-storage/index/imapc/imapc-mailbox.c @@ -457,6 +457,23 @@ imapc_mailbox_msgmap_update(struct imapc_mailbox *mbox, return 0; } +bool imapc_mailbox_name_equals(struct imapc_mailbox *mbox, + const char *remote_name) +{ + const char *imapc_remote_name = + imapc_mailbox_get_remote_name(mbox); + + if (strcmp(imapc_remote_name, remote_name) == 0) { + /* match */ + return TRUE; + } else if (strcasecmp(mbox->box.name, "INBOX") == 0 && + strcasecmp(remote_name, "INBOX") == 0) { + /* case-insensitive INBOX */ + return TRUE; + } + return FALSE; +} + static void imapc_untagged_fetch(const struct imapc_untagged_reply *reply, struct imapc_mailbox *mbox) { diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 84a75d771b..520dc52368 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -919,16 +919,9 @@ static void imapc_untagged_status(const struct imapc_untagged_reply *reply, if (storage->cur_status_box == NULL) return; - const char *cur_status_remote_name = - imapc_mailbox_get_remote_name(storage->cur_status_box); - if (strcmp(cur_status_remote_name, remote_name) == 0) { - /* match */ - } else if (strcasecmp(storage->cur_status_box->box.name, "INBOX") == 0 && - strcasecmp(remote_name, "INBOX") == 0) { - /* case-insensitive INBOX */ - } else { + if (!imapc_mailbox_name_equals(storage->cur_status_box, + remote_name)) return; - } status = storage->cur_status; for (i = 0; list[i].type != IMAP_ARG_EOL; i += 2) { diff --git a/src/lib-storage/index/imapc/imapc-storage.h b/src/lib-storage/index/imapc/imapc-storage.h index 0736e566b0..4c32d29aa1 100644 --- a/src/lib-storage/index/imapc/imapc-storage.h +++ b/src/lib-storage/index/imapc/imapc-storage.h @@ -200,6 +200,8 @@ void imapc_simple_callback(const struct imapc_command_reply *reply, void *context); int imapc_mailbox_commit_delayed_trans(struct imapc_mailbox *mbox, bool force, bool *changes_r); +bool imapc_mailbox_name_equals(struct imapc_mailbox *mbox, + const char *remote_name); void imapc_mailbox_noop(struct imapc_mailbox *mbox); void imapc_mailbox_set_corrupted(struct imapc_mailbox *mbox, const char *reason, ...) ATTR_FORMAT(2, 3);