Index: src/auth/auth-master-connection.c
===================================================================
--- src/auth/auth-master-connection.c   (wersja 1391)
+++ src/auth/auth-master-connection.c   (kopia robocza)
@@ -252,6 +252,7 @@
        struct auth_master_connection *conn = auth_request->master;
        string_t *str;
        const char *value;
+       char *new_user;
 
        if (auth_request->userdb_lookup_tempfailed)
                result = USERDB_RESULT_INTERNAL_FAILURE;
@@ -277,7 +278,11 @@
                break;
        case USERDB_RESULT_OK:
                str_printfa(str, "USER\t%u\t", auth_request->id);
-               str_append_tabescaped(str, auth_request->user);
+               new_user=auth_fields_find(auth_request->userdb_reply, "user");
+               if(new_user && strlen(new_user) > 0)
+                       str_append_tabescaped(str, new_user);
+               else
+                       str_append_tabescaped(str, auth_request->user);
                str_append_c(str, '\t');
                auth_fields_append(auth_request->userdb_reply, str,
                                   AUTH_FIELD_FLAG_HIDDEN, 0);
Index: src/auth/auth-request.c
===================================================================
--- src/auth/auth-request.c     (wersja 1391)
+++ src/auth/auth-request.c     (kopia robocza)
@@ -952,7 +952,14 @@
                auth_fields_append(request->userdb_reply, str,
                                   AUTH_FIELD_FLAG_CHANGED,
                                   AUTH_FIELD_FLAG_CHANGED);
-               if (str_len(str) == 0) {
+               if( strcmp(request->original_username, request->user) != 0) {
+                       /* lazy: stor new username if changed */
+                       if (str_len(str) == 0)
+                               str_append(str, "user=");
+                       else
+                               str_append(str, "\tuser=");
+                       str_append(str, request->user);
+               }else if (str_len(str) == 0) {
                        /* no userdb fields. but we can't save an empty string,
                           since that means "user unknown". */
                        str_append(str, AUTH_REQUEST_USER_KEY_IGNORE);