MXS-2349: Add support for UNIX domain sockets

Added core functionality for UNIX domain sockets in servers. Currently the
address parameter accepts them both but a separate `socket` parameter is
needed.
This commit is contained in:
Markus Mäkelä
2019-04-12 09:49:55 +03:00
parent 3c188bf421
commit 70450ce881
2 changed files with 28 additions and 7 deletions

View File

@ -178,13 +178,22 @@ MYSQL* mxs_mysql_real_connect(MYSQL* con, SERVER* server, const char* user, cons
}
}
MYSQL* mysql = mysql_real_connect(con, server->address, user, passwd, NULL, server->port, NULL, 0);
auto extra_port = mxb::atomic::load(&server->extra_port, mxb::atomic::RELAXED);
MYSQL* mysql = nullptr;
if (!mysql && extra_port > 0)
if (server->address[0] == '/')
{
mysql = mysql_real_connect(con, server->address, user, passwd, NULL, extra_port, NULL, 0);
MXS_WARNING("Could not connect with normal port to server '%s', using extra_port", server->name());
mysql = mysql_real_connect(con, nullptr, user, passwd, nullptr, 0, server->address, 0);
}
else
{
mysql = mysql_real_connect(con, server->address, user, passwd, NULL, server->port, NULL, 0);
auto extra_port = mxb::atomic::load(&server->extra_port, mxb::atomic::RELAXED);
if (!mysql && extra_port > 0)
{
mysql = mysql_real_connect(con, server->address, user, passwd, NULL, extra_port, NULL, 0);
MXS_WARNING("Could not connect with normal port to server '%s', using extra_port", server->name());
}
}
if (mysql)