Commit 034bbee3 authored by unknown's avatar unknown

made tryBind static

using tryBind instead to determine if we're "config host" is "local"


ndb/include/util/SocketServer.hpp:
  made tryBind static
ndb/src/common/util/SocketServer.cpp:
  made tryBind static
ndb/src/mgmsrv/MgmtSrvr.cpp:
  using tryBind instead to determine if we're "config host" is "local"
parent 3bfae53b
...@@ -76,7 +76,7 @@ public: ...@@ -76,7 +76,7 @@ public:
* then close the socket * then close the socket
* Returns true if succeding in binding * Returns true if succeding in binding
*/ */
bool tryBind(unsigned short port, const char * intface = 0) const; static bool tryBind(unsigned short port, const char * intface = 0);
/** /**
* Setup socket * Setup socket
......
...@@ -47,7 +47,7 @@ SocketServer::~SocketServer() { ...@@ -47,7 +47,7 @@ SocketServer::~SocketServer() {
} }
bool bool
SocketServer::tryBind(unsigned short port, const char * intface) const { SocketServer::tryBind(unsigned short port, const char * intface) {
struct sockaddr_in servaddr; struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr)); memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET; servaddr.sin_family = AF_INET;
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <ndb_global.h> #include <ndb_global.h>
#include <pthread.h> #include <my_pthread.h>
#include "MgmtSrvr.hpp" #include "MgmtSrvr.hpp"
#include "MgmtErrorReporter.hpp" #include "MgmtErrorReporter.hpp"
...@@ -124,9 +124,10 @@ void * ...@@ -124,9 +124,10 @@ void *
MgmtSrvr::logLevelThread_C(void* m) MgmtSrvr::logLevelThread_C(void* m)
{ {
MgmtSrvr *mgm = (MgmtSrvr*)m; MgmtSrvr *mgm = (MgmtSrvr*)m;
my_thread_init();
mgm->logLevelThreadRun(); mgm->logLevelThreadRun();
my_thread_end();
NdbThread_Exit(0); NdbThread_Exit(0);
/* NOTREACHED */ /* NOTREACHED */
return 0; return 0;
...@@ -136,9 +137,10 @@ void * ...@@ -136,9 +137,10 @@ void *
MgmtSrvr::signalRecvThread_C(void *m) MgmtSrvr::signalRecvThread_C(void *m)
{ {
MgmtSrvr *mgm = (MgmtSrvr*)m; MgmtSrvr *mgm = (MgmtSrvr*)m;
my_thread_init();
mgm->signalRecvThreadRun(); mgm->signalRecvThreadRun();
my_thread_end();
NdbThread_Exit(0); NdbThread_Exit(0);
/* NOTREACHED */ /* NOTREACHED */
return 0; return 0;
...@@ -573,6 +575,9 @@ MgmtSrvr::MgmtSrvr(NodeId nodeId, ...@@ -573,6 +575,9 @@ MgmtSrvr::MgmtSrvr(NodeId nodeId,
_props = NULL; _props = NULL;
_ownNodeId= 0; _ownNodeId= 0;
NodeId tmp= nodeId;
BaseString error_string;
#if 0
char my_hostname[256]; char my_hostname[256];
struct sockaddr_in tmp_addr; struct sockaddr_in tmp_addr;
SOCKET_SIZE_TYPE addrlen= sizeof(tmp_addr); SOCKET_SIZE_TYPE addrlen= sizeof(tmp_addr);
...@@ -587,8 +592,6 @@ MgmtSrvr::MgmtSrvr(NodeId nodeId, ...@@ -587,8 +592,6 @@ MgmtSrvr::MgmtSrvr(NodeId nodeId,
exit(-1); exit(-1);
} }
} }
NodeId tmp= nodeId;
BaseString error_string;
if (!alloc_node_id(&tmp, NDB_MGM_NODE_TYPE_MGM, if (!alloc_node_id(&tmp, NDB_MGM_NODE_TYPE_MGM,
(struct sockaddr *)&tmp_addr, (struct sockaddr *)&tmp_addr,
&addrlen, error_string)){ &addrlen, error_string)){
...@@ -596,6 +599,14 @@ MgmtSrvr::MgmtSrvr(NodeId nodeId, ...@@ -596,6 +599,14 @@ MgmtSrvr::MgmtSrvr(NodeId nodeId,
<< error_string.c_str() << endl; << error_string.c_str() << endl;
exit(-1); exit(-1);
} }
#else
if (!alloc_node_id(&tmp, NDB_MGM_NODE_TYPE_MGM,
0, 0, error_string)){
ndbout << "Unable to obtain requested nodeid: "
<< error_string.c_str() << endl;
exit(-1);
}
#endif
_ownNodeId = tmp; _ownNodeId = tmp;
...@@ -2248,7 +2259,12 @@ MgmtSrvr::alloc_node_id(NodeId * nodeId, ...@@ -2248,7 +2259,12 @@ MgmtSrvr::alloc_node_id(NodeId * nodeId,
continue; continue;
} }
// connecting through localhost // connecting through localhost
// check if config_hostname match hostname // check if config_hostname is local
#if 1
if (!SocketServer::tryBind(0,config_hostname)) {
continue;
}
#else
char my_hostname[256]; char my_hostname[256];
if (gethostname(my_hostname, sizeof(my_hostname)) != 0) if (gethostname(my_hostname, sizeof(my_hostname)) != 0)
continue; continue;
...@@ -2257,6 +2273,11 @@ MgmtSrvr::alloc_node_id(NodeId * nodeId, ...@@ -2257,6 +2273,11 @@ MgmtSrvr::alloc_node_id(NodeId * nodeId,
// no match // no match
continue; continue;
} }
#endif
}
} else { // client_addr == 0
if (!SocketServer::tryBind(0,config_hostname)) {
continue;
} }
} }
if (*nodeId != 0 || if (*nodeId != 0 ||
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment