mirror of
https://github.com/MariaDB/server.git
synced 2025-12-04 17:23:46 +03:00
Impl 3 of WL2278 - Dynamic port allocation of cluster nodes
- Change configuration handling so that no default ports are given, but instead 0 is set (port to be dynamic) - TransporterRegistry::start_service now only tries to connect when fetched port number > 0 ndb/include/util/SocketServer.hpp: Update prototype of setup() to take a pointer to the port (so we can return the port we bound to) ndb/src/common/transporter/TransporterRegistry.cpp: Only try to connect_client when we have a valid port number (i.e. > 0) ndb/src/common/util/SocketServer.cpp: ::setup(): Return the port we bound to ndb/src/cw/cpcd/main.cpp: Use new SocketServer::setup() api - returns port we bound to. ndb/src/mgmsrv/main.cpp: Conform to new SocketServer::setup() API (port is a pointer, returning the port we bound to) ndb/src/mgmsrv/ConfigInfo.cpp: fixPortNumber: Don't create port numbers when none are specified, just set 0 (dynamic) ndb/src/mgmsrv/MgmtSrvr.cpp: use DBUG_RETURN correctly in setConnectionDbParameter
This commit is contained in:
@@ -82,15 +82,15 @@ SocketServer::tryBind(unsigned short port, const char * intface) {
|
||||
|
||||
bool
|
||||
SocketServer::setup(SocketServer::Service * service,
|
||||
unsigned short port,
|
||||
unsigned short * port,
|
||||
const char * intface){
|
||||
DBUG_ENTER("SocketServer::setup");
|
||||
DBUG_PRINT("enter",("interface=%s, port=%d", intface, port));
|
||||
DBUG_PRINT("enter",("interface=%s, port=%u", intface, *port));
|
||||
struct sockaddr_in servaddr;
|
||||
memset(&servaddr, 0, sizeof(servaddr));
|
||||
servaddr.sin_family = AF_INET;
|
||||
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
servaddr.sin_port = htons(port);
|
||||
servaddr.sin_port = htons(*port);
|
||||
|
||||
if(intface != 0){
|
||||
if(Ndb_getInAddr(&servaddr.sin_addr, intface))
|
||||
@@ -119,7 +119,9 @@ SocketServer::setup(SocketServer::Service * service,
|
||||
NDB_CLOSE_SOCKET(sock);
|
||||
DBUG_RETURN(false);
|
||||
}
|
||||
|
||||
socklen_t sock_len = sizeof(servaddr);
|
||||
getsockname(sock,(struct sockaddr*)&servaddr,&sock_len);
|
||||
DBUG_PRINT("info",("bound to %u",ntohs(servaddr.sin_port)));
|
||||
if (listen(sock, m_maxSessions) == -1){
|
||||
DBUG_PRINT("error",("listen() - %d - %s",
|
||||
errno, strerror(errno)));
|
||||
@@ -131,6 +133,9 @@ SocketServer::setup(SocketServer::Service * service,
|
||||
i.m_socket = sock;
|
||||
i.m_service = service;
|
||||
m_services.push_back(i);
|
||||
|
||||
*port = ntohs(servaddr.sin_port);
|
||||
|
||||
DBUG_RETURN(true);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user