diff src/doveadm/dsync/dsync-brain.c @ 16540:84014270ee37

dsync: Don't try to find mailboxes from unwanted namespaces.
author Timo Sirainen <tss@iki.fi>
date Mon, 24 Jun 2013 22:25:47 +0300
parents b5876fa03b0e
children 07e314199f56
line wrap: on
line diff
--- a/src/doveadm/dsync/dsync-brain.c	Mon Jun 24 16:37:48 2013 +0300
+++ b/src/doveadm/dsync/dsync-brain.c	Mon Jun 24 22:25:47 2013 +0300
@@ -6,6 +6,7 @@
 #include "hostpid.h"
 #include "str.h"
 #include "process-title.h"
+#include "settings-parser.h"
 #include "master-service.h"
 #include "master-service-settings.h"
 #include "mail-namespace.h"
@@ -584,3 +585,25 @@
 {
 	return brain->changes_during_sync;
 }
+
+bool dsync_brain_want_namespace(struct dsync_brain *brain,
+				struct mail_namespace *ns)
+{
+	if (brain->sync_ns != NULL)
+		return brain->sync_ns == ns;
+	if (ns->alias_for != NULL) {
+		/* always skip aliases */
+		return FALSE;
+	}
+	if (brain->sync_visible_namespaces) {
+		if ((ns->flags & NAMESPACE_FLAG_HIDDEN) == 0)
+			return TRUE;
+		if ((ns->flags & (NAMESPACE_FLAG_LIST_PREFIX |
+				  NAMESPACE_FLAG_LIST_CHILDREN)) != 0)
+			return TRUE;
+		return FALSE;
+	} else {
+		return strcmp(ns->unexpanded_set->location,
+			      SETTING_STRVAR_UNEXPANDED) == 0;
+	}
+}