Commit 760f69c1 authored by unknown's avatar unknown

using my_gethostbyname_r in Ndb_getInAddr

parent 3dee030f
...@@ -16,29 +16,27 @@ ...@@ -16,29 +16,27 @@
#include <ndb_global.h> #include <ndb_global.h>
#include <NdbMutex.h> #include <my_net.h>
#include <NdbTCP.h> #include <NdbTCP.h>
#if defined NDB_WIN32 || defined SCO
static NdbMutex & LOCK_gethostbyname = * NdbMutex_Create();
#else
static NdbMutex LOCK_gethostbyname = NDB_MUTEX_INITIALIZER;
#endif
extern "C" extern "C"
int int
Ndb_getInAddr(struct in_addr * dst, const char *address) { Ndb_getInAddr(struct in_addr * dst, const char *address) {
DBUG_ENTER("Ndb_getInAddr"); DBUG_ENTER("Ndb_getInAddr");
struct hostent * hostPtr; {
NdbMutex_Lock(&LOCK_gethostbyname); int tmp_errno;
hostPtr = gethostbyname(address); struct hostent tmp_hostent, *hp;
if (hostPtr != NULL) { char buff[GETHOSTBYNAME_BUFF_SIZE];
dst->s_addr = ((struct in_addr *) *hostPtr->h_addr_list)->s_addr; hp = my_gethostbyname_r(address,&tmp_hostent,buff,sizeof(buff),
NdbMutex_Unlock(&LOCK_gethostbyname); &tmp_errno);
if (hp)
{
memcpy(dst, hp->h_addr, min(sizeof(*dst), (size_t) hp->h_length));
my_gethostbyname_r_free();
DBUG_RETURN(0); DBUG_RETURN(0);
} }
NdbMutex_Unlock(&LOCK_gethostbyname); my_gethostbyname_r_free();
}
/* Try it as aaa.bbb.ccc.ddd. */ /* Try it as aaa.bbb.ccc.ddd. */
dst->s_addr = inet_addr(address); dst->s_addr = inet_addr(address);
if (dst->s_addr != if (dst->s_addr !=
......
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