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:
parent
3c188bf421
commit
70450ce881
@ -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)
|
||||
|
@ -261,7 +261,19 @@ static int gw_do_connect_to_backend(char* host, int port, int* fd)
|
||||
int rv = -1;
|
||||
|
||||
/* prepare for connect */
|
||||
int so = open_network_socket(MXS_SOCKET_NETWORK, &serv_addr, host, port);
|
||||
int so;
|
||||
size_t sz;
|
||||
|
||||
if (host[0] == '/')
|
||||
{
|
||||
so = open_unix_socket(MXS_SOCKET_NETWORK, (struct sockaddr_un*)&serv_addr, host);
|
||||
sz = sizeof(sockaddr_un);
|
||||
}
|
||||
else
|
||||
{
|
||||
so = open_network_socket(MXS_SOCKET_NETWORK, &serv_addr, host, port);
|
||||
sz = sizeof(sockaddr_storage);
|
||||
}
|
||||
|
||||
if (so == -1)
|
||||
{
|
||||
@ -269,7 +281,7 @@ static int gw_do_connect_to_backend(char* host, int port, int* fd)
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv = connect(so, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
|
||||
rv = connect(so, (struct sockaddr*)&serv_addr, sz);
|
||||
|
||||
if (rv != 0)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user