From: Timo Sirainen Date: Tue, 21 Sep 2021 14:10:56 +0000 (+0300) Subject: dsync: Split off dsync_brain_recv_mailbox_tree_add() X-Git-Tag: 2.3.17~75 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1b4f8cf6a24aea67d178b13f664742adb545aac9;p=thirdparty%2Fdovecot%2Fcore.git dsync: Split off dsync_brain_recv_mailbox_tree_add() --- diff --git a/src/doveadm/dsync/dsync-brain-mailbox-tree.c b/src/doveadm/dsync/dsync-brain-mailbox-tree.c index ba9ddeb07d..91422e009c 100644 --- a/src/doveadm/dsync/dsync-brain-mailbox-tree.c +++ b/src/doveadm/dsync/dsync-brain-mailbox-tree.c @@ -342,12 +342,35 @@ static void dsync_brain_mailbox_trees_sync(struct dsync_brain *brain) brain->failed = TRUE; } +static int +dsync_brain_recv_mailbox_tree_add(struct dsync_brain *brain, + const char *const *parts, + const struct dsync_mailbox_node *remote_node, + const char *sep) +{ + struct dsync_mailbox_node *node; + struct mail_namespace *ns; + const char *name; + + if (dsync_get_mailbox_name(brain, parts, &name, &ns) < 0) + return -1; + if (brain->debug) { + i_debug("brain %c: Remote mailbox tree: %s %s", + brain->master_brain ? 'M' : 'S', + t_strarray_join(parts, sep), + dsync_mailbox_node_to_string(remote_node)); + } + node = dsync_mailbox_tree_get(brain->remote_mailbox_tree, name); + node->ns = ns; + dsync_mailbox_node_copy_data(node, remote_node); + return 0; +} + bool dsync_brain_recv_mailbox_tree(struct dsync_brain *brain) { const struct dsync_mailbox_node *remote_node; - struct dsync_mailbox_node *node, *dup_node1, *dup_node2; - const char *const *parts, *name; - struct mail_namespace *ns; + struct dsync_mailbox_node *dup_node1, *dup_node2; + const char *const *parts; enum dsync_ibc_recv_ret ret; char sep[2]; bool changed = FALSE; @@ -355,21 +378,13 @@ bool dsync_brain_recv_mailbox_tree(struct dsync_brain *brain) sep[0] = brain->hierarchy_sep; sep[1] = '\0'; while ((ret = dsync_ibc_recv_mailbox_tree_node(brain->ibc, &parts, &remote_node)) > 0) { - if (dsync_get_mailbox_name(brain, parts, &name, &ns) < 0) { + if (dsync_brain_recv_mailbox_tree_add(brain, parts, + remote_node, sep) < 0) { i_error("Couldn't find namespace for mailbox %s", t_strarray_join(parts, sep)); brain->failed = TRUE; return TRUE; } - if (brain->debug) { - i_debug("brain %c: Remote mailbox tree: %s %s", - brain->master_brain ? 'M' : 'S', - t_strarray_join(parts, sep), - dsync_mailbox_node_to_string(remote_node)); - } - node = dsync_mailbox_tree_get(brain->remote_mailbox_tree, name); - node->ns = ns; - dsync_mailbox_node_copy_data(node, remote_node); } if (ret != DSYNC_IBC_RECV_RET_FINISHED) return changed;