]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: Master user login + prefetch userdb changed username to master user.
authorTimo Sirainen <tss@iki.fi>
Tue, 7 Dec 2010 02:00:45 +0000 (02:00 +0000)
committerTimo Sirainen <tss@iki.fi>
Tue, 7 Dec 2010 02:00:45 +0000 (02:00 +0000)
src/auth/auth-request.c

index de592cf19c25ea9cb2c38c77d28fa93eb1a55240..c6f0d2e7666b2abef1f603712df5d40cf4c6acae 100644 (file)
@@ -354,6 +354,22 @@ static void auth_request_save_cache(struct auth_request *request,
                          result == PASSDB_RESULT_OK);
 }
 
+static void auth_request_userdb_reply_update_user(struct auth_request *request)
+{
+       const char *str, *p;
+
+       str = t_strdup(auth_stream_reply_export(request->userdb_reply));
+
+       /* reset the reply and add the new username */
+       auth_stream_reply_reset(request->userdb_reply);
+       auth_stream_reply_add(request->userdb_reply, NULL, request->user);
+
+       /* add the rest */
+       p = strchr(str, '\t');
+       if (p != NULL)
+               auth_stream_reply_import(request->userdb_reply, p + 1);
+}
+
 static bool auth_request_master_lookup_finish(struct auth_request *request)
 {
        struct auth_passdb *passdb;
@@ -368,6 +384,8 @@ static bool auth_request_master_lookup_finish(struct auth_request *request)
        request->master_user = request->user;
        request->user = request->requested_login_user;
        request->requested_login_user = NULL;
+       if (request->userdb_reply != NULL)
+               auth_request_userdb_reply_update_user(request);
 
        request->skip_password_check = TRUE;
        request->passdb_password = NULL;
@@ -1079,22 +1097,6 @@ static void auth_request_set_reply_field(struct auth_request *request,
        auth_stream_reply_add(request->extra_fields, name, value);
 }
 
-static void auth_request_userdb_reply_update_user(struct auth_request *request)
-{
-       const char *str, *p;
-
-       str = t_strdup(auth_stream_reply_export(request->userdb_reply));
-
-       /* reset the reply and add the new username */
-       auth_stream_reply_reset(request->userdb_reply);
-       auth_stream_reply_add(request->userdb_reply, NULL, request->user);
-
-       /* add the rest */
-       p = strchr(str, '\t');
-       if (p != NULL)
-               auth_stream_reply_import(request->userdb_reply, p + 1);
-}
-
 static const char *
 get_updated_username(const char *old_username,
                     const char *name, const char *value)