MXS-1738 Copy AF_UNIX data from listener to client dcb

We need to copy some data from a AF_UNIX based listener dcb
to the accepted client dcb, to prevent assertion violation in
dcb_get_port(). Further, to be able to log the path in the case
of an authentication error we need to copy that as well.
This commit is contained in:
Johan Wikman
2018-03-23 15:17:05 +02:00
parent 3af5364233
commit 2bdac88b0b
2 changed files with 13 additions and 3 deletions

View File

@ -1235,7 +1235,7 @@ void dcb_final_close(DCB* dcb)
MXS_DEBUG("Closed socket %d on dcb %p.", dcb->fd, dcb);
}
if (dcb->path)
if (dcb->path && (dcb->dcb_role == DCB_ROLE_SERVICE_LISTENER))
{
if (unlink(dcb->path) != 0)
{
@ -2396,7 +2396,9 @@ dcb_accept(DCB *dcb)
if (client_conn.ss_family == AF_UNIX)
{
// client address
client_dcb->ip.ss_family = AF_UNIX;
client_dcb->remote = MXS_STRDUP_A("localhost");
client_dcb->path = MXS_STRDUP_A(dcb->path);
}
else
{

View File

@ -304,8 +304,16 @@ mysql_auth_authenticate(DCB *dcb)
}
else if (dcb->service->log_auth_warnings)
{
MXS_WARNING("%s: login attempt for user '%s'@[%s]:%d, authentication failed.",
dcb->service->name, client_data->user, dcb->remote, dcb_get_port(dcb));
if (dcb->path)
{
MXS_WARNING("%s: login attempt for user '%s'@[%s]:%s, authentication failed.",
dcb->service->name, client_data->user, dcb->remote, dcb->path);
}
else
{
MXS_WARNING("%s: login attempt for user '%s'@[%s]:%d, authentication failed.",
dcb->service->name, client_data->user, dcb->remote, dcb_get_port(dcb));
}
if (is_localhost_address(&dcb->ip) &&
!dcb->service->localhost_match_wildcard_host)