]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Store pointer to mail_storage_service_user to mail_user if it exists.
authorTimo Sirainen <tss@iki.fi>
Sun, 6 Sep 2015 19:28:07 +0000 (22:28 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 6 Sep 2015 19:28:07 +0000 (22:28 +0300)
src/lib-storage/index/shared/shared-storage.c
src/lib-storage/mail-storage-service.c
src/lib-storage/mail-user.c
src/lib-storage/mail-user.h

index f25d7f9002d062561c500734d66f20331c698339..242008889cba0509d7108e2cf1bddccedb97b69c 100644 (file)
@@ -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);
index 8e8ed80fb8ad37888884ea8da10cd59c5df96a21..090fd3b74e4a3409b5fe75da136b9b1f1ea80b99 100644 (file)
@@ -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);
index 16d3b890ad140c4f79e28455959307ad2255eb62..ad7c13eb85cb117fb654311fba0c6c6907e56274 100644 (file)
@@ -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,
index 1e659fc79fa406f5958ba5a6633c3e972d70b40f..87bd4ae1aca1dc0c758f3ed7abf6aaf2a20729c3 100644 (file)
@@ -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. */