From 369daa833d1e39629cc92da3ea7d2b9b5cf31610 Mon Sep 17 00:00:00 2001 From: Markus Valentin Date: Tue, 25 May 2021 16:09:25 +0200 Subject: [PATCH] imapc: Extract imapc_mailbox_name_equals from imapc_untagged_status --- src/lib-storage/index/imapc/imapc-mailbox.c | 17 +++++++++++++++++ src/lib-storage/index/imapc/imapc-storage.c | 11 ++--------- src/lib-storage/index/imapc/imapc-storage.h | 2 ++ 3 files changed, 21 insertions(+), 9 deletions(-) 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); -- 2.47.3