commit 76594784c50bca1b09f687e58f17ff27230076be Author: Jose Arthur Benetasso Villanova Date: Tue Jan 19 11:50:22 2016 -0200 Log message diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index 57c2f48..ac1c785 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -991,6 +991,7 @@ pg_GSS_recvauth(Port *port) return STATUS_ERROR; } + port->system_user = pstrdup(gbuf.value); ret = check_usermap(port->hba->usermap, port->user_name, gbuf.value, pg_krb_caseins_users); @@ -1291,6 +1292,7 @@ pg_SSPI_recvauth(Port *port) int retval; namebuf = psprintf("%s@%s", accountname, domainname); + port->system_user = pstrdup(namebuf); retval = check_usermap(port->hba->usermap, port->user_name, namebuf, true); pfree(namebuf); return retval; @@ -1561,8 +1563,11 @@ ident_inet_done: pg_freeaddrinfo_all(local_addr.addr.ss_family, la); if (ident_return) + { /* Success! Check the usermap */ + port->system_user = pstrdup(ident_user); return check_usermap(port->hba->usermap, port->user_name, ident_user, false); + } return STATUS_ERROR; } @@ -1609,6 +1614,8 @@ auth_peer(hbaPort *port) } strlcpy(ident_user, pw->pw_name, IDENT_USERNAME_MAX + 1); + port->system_user = pstrdup(ident_user); + return check_usermap(port->hba->usermap, port->user_name, ident_user, false); } @@ -2124,6 +2131,7 @@ CheckLDAPAuth(Port *port) return STATUS_ERROR; } + port->system_user = pstrdup(fulluser); pfree(fulluser); return STATUS_OK; diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index e22d4db..f425808 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -255,7 +255,8 @@ PerformAuthentication(Port *port) #endif ereport(LOG, (errmsg("replication connection authorized: user=%s", - port->user_name))); + port->user_name), + port->system_user ? errdetail_log("system_user=%s", port->system_user) : 0)); } else { @@ -269,7 +270,8 @@ PerformAuthentication(Port *port) #endif ereport(LOG, (errmsg("connection authorized: user=%s database=%s", - port->user_name, port->database_name))); + port->user_name, port->database_name), + port->system_user ? errdetail_log("system_user=%s", port->system_user) : 0)); } } diff --git a/src/include/libpq/libpq-be.h b/src/include/libpq/libpq-be.h index 5d07b78..448ac36 100644 --- a/src/include/libpq/libpq-be.h +++ b/src/include/libpq/libpq-be.h @@ -129,6 +129,7 @@ typedef struct Port int remote_hostname_errcode; /* see above */ char *remote_port; /* text rep of remote port */ CAC_state canAcceptConnections; /* postmaster connection status */ + char *system_user; /* remote user name if available */ /* * Information that needs to be saved from the startup packet and passed