dovecot-1.3: Shared mailboxes: If selecting prefix/<username>, t...

dovecot at dovecot.org dovecot at dovecot.org
Wed Apr 8 01:11:23 EEST 2009


details:   http://hg.dovecot.org/dovecot-1.3/rev/5d3dd9eb82d9
changeset: 9041:5d3dd9eb82d9
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Apr 07 17:57:34 2009 -0400
description:
Shared mailboxes: If selecting prefix/<username>, try to open the user's INBOX.

diffstat:

1 file changed, 18 insertions(+), 12 deletions(-)
src/lib-storage/index/shared/shared-storage.c |   30 +++++++++++++++----------

diffs (49 lines):

diff -r 4e6745ffc307 -r 5d3dd9eb82d9 src/lib-storage/index/shared/shared-storage.c
--- a/src/lib-storage/index/shared/shared-storage.c	Tue Apr 07 17:54:32 2009 -0400
+++ b/src/lib-storage/index/shared/shared-storage.c	Tue Apr 07 17:57:34 2009 -0400
@@ -148,12 +148,8 @@ int shared_storage_get_namespace(struct 
 	p = storage->ns_prefix_pattern;
 	for (name = *_name; *p != '\0';) {
 		if (*p != '%') {
-			if (*p != *name) {
-				mail_storage_set_critical(_storage,
-					"Invalid namespace prefix %s vs %s",
-					storage->ns_prefix_pattern, *_name);
-				return -1;
-			}
+			if (*p != *name)
+				break;
 			p++; name++;
 			continue;
 		}
@@ -175,14 +171,24 @@ int shared_storage_get_namespace(struct 
 
 		next = strchr(name, *p != '\0' ? *p : _storage->ns->sep);
 		if (next == NULL) {
-			mail_storage_set_critical(_storage,
-				"Invalid namespace prefix %s vs %s",
-				storage->ns_prefix_pattern, *_name);
-			return -1;
-		}
-
+			*dest = name;
+			name = "";
+			break;
+		}
 		*dest = t_strdup_until(name, next);
 		name = next;
+	}
+	if (*p != '\0') {
+		if (*name == '\0' ||
+		    (name[1] == '\0' && *name == _storage->ns->sep)) {
+			/* trying to open <prefix>/<user> mailbox */
+			name = "INBOX";
+		} else {
+			mail_storage_set_critical(_storage,
+					"Invalid namespace prefix %s vs %s",
+					storage->ns_prefix_pattern, *_name);
+			return -1;
+		}
 	}
 	/* successfully matched the name. */
 	if (userdomain == NULL) {


More information about the dovecot-cvs mailing list