Mercurial > dovecot > original-hg > dovecot-1.2
changeset 9233:518963e8a20d HEAD
shared mailboxes: If only %%n is specified in prefix, default to current user's domain.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 20 Jul 2009 14:32:25 -0400 |
parents | f57f9dab059b |
children | ae3e0ff64c94 |
files | src/lib-storage/index/shared/shared-storage.c |
diffstat | 1 files changed, 16 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/shared/shared-storage.c Fri Jul 17 18:57:48 2009 -0400 +++ b/src/lib-storage/index/shared/shared-storage.c Mon Jul 20 14:32:25 2009 -0400 @@ -192,17 +192,8 @@ } /* successfully matched the name. */ - if (userdomain == NULL) { - if (username == NULL) { - /* trying to open namespace "shared/domain" - namespace prefix. */ - mail_storage_set_error(_storage, MAIL_ERROR_NOTFOUND, - T_MAIL_ERR_MAILBOX_NOT_FOUND(*_name)); - return -1; - } - userdomain = domain == NULL ? username : - t_strconcat(username, "@", domain, NULL); - } else { + if (userdomain != NULL) { + /* user@domain given */ domain = strchr(userdomain, '@'); if (domain == NULL) username = userdomain; @@ -210,6 +201,20 @@ username = t_strdup_until(userdomain, domain); domain++; } + } else if (username == NULL) { + /* trying to open namespace "shared/domain" + namespace prefix. */ + mail_storage_set_error(_storage, MAIL_ERROR_NOTFOUND, + T_MAIL_ERR_MAILBOX_NOT_FOUND(*_name)); + return -1; + } else { + if (domain == NULL) { + /* no domain given, use ours (if we have one) */ + domain = strchr(user->username, '@'); + if (domain != NULL) domain++; + } + userdomain = domain == NULL ? username : + t_strconcat(username, "@", domain, NULL); } if (*userdomain == '\0') { mail_storage_set_error(_storage, MAIL_ERROR_PARAMS,