From: Timo Sirainen Date: Sun, 6 Sep 2015 19:28:07 +0000 (+0300) Subject: lib-storage: Store pointer to mail_storage_service_user to mail_user if it exists. X-Git-Tag: 2.2.19.rc1~100 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=691f802ef6ec2105079d420ba26b21088402c6da;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Store pointer to mail_storage_service_user to mail_user if it exists. --- diff --git a/src/lib-storage/index/shared/shared-storage.c b/src/lib-storage/index/shared/shared-storage.c index f25d7f9002..242008889c 100644 --- a/src/lib-storage/index/shared/shared-storage.c +++ b/src/lib-storage/index/shared/shared-storage.c @@ -255,6 +255,7 @@ int shared_storage_get_namespace(struct mail_namespace **_ns, owner = mail_user_alloc(userdomain, user->set_info, user->unexpanded_set); + owner->_service_user = user->_service_user; owner->creator = user; owner->autocreated = TRUE; owner->session_id = p_strdup(owner->pool, user->session_id); diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 8e8ed80fb8..090fd3b74e 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -642,6 +642,7 @@ mail_storage_service_init_post(struct mail_storage_service_ctx *ctx, mail_user_dup() */ mail_user = mail_user_alloc(user->input.username, user->user_info, user->user_set); + mail_user->_service_user = user; mail_user_set_home(mail_user, *home == '\0' ? NULL : home); mail_user_set_vars(mail_user, ctx->service->name, &user->input.local_ip, &user->input.remote_ip); diff --git a/src/lib-storage/mail-user.c b/src/lib-storage/mail-user.c index 16d3b890ad..ad7c13eb85 100644 --- a/src/lib-storage/mail-user.c +++ b/src/lib-storage/mail-user.c @@ -521,6 +521,7 @@ struct mail_user *mail_user_dup(struct mail_user *user) user2 = mail_user_alloc(user->username, user->set_info, user->unexpanded_set); + user2->_service_user = user->_service_user; if (user->_home != NULL) mail_user_set_home(user2, user->_home); mail_user_set_vars(user2, user->service, diff --git a/src/lib-storage/mail-user.h b/src/lib-storage/mail-user.h index 1e659fc79f..87bd4ae1ac 100644 --- a/src/lib-storage/mail-user.h +++ b/src/lib-storage/mail-user.h @@ -23,6 +23,8 @@ struct mail_user { /* User's creator if such exists. For example for autocreated shared mailbox users their creator is the logged in user. */ struct mail_user *creator; + /* Set if user was created via mail_storage_service. */ + struct mail_storage_service_user *_service_user; const char *username; /* don't access the home directly. It may be set lazily. */