From: Timo Sirainen Date: Tue, 7 Dec 2010 02:00:45 +0000 (+0000) Subject: auth: Master user login + prefetch userdb changed username to master user. X-Git-Tag: 2.0.9~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7b32aeca72e3aea81715033bfd8b8140994a89b8;p=thirdparty%2Fdovecot%2Fcore.git auth: Master user login + prefetch userdb changed username to master user. --- diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c index de592cf19c..c6f0d2e766 100644 --- a/src/auth/auth-request.c +++ b/src/auth/auth-request.c @@ -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)