1
0
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:
unknown
2005-01-04 15:20:27 +11:00
parent 0cf733b9b6
commit d362d09408
7 changed files with 49 additions and 54 deletions

View File

@@ -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);
}