diff options
author | tomas@poseidon.ndb.mysql.com <> | 2004-10-25 10:19:45 +0000 |
---|---|---|
committer | tomas@poseidon.ndb.mysql.com <> | 2004-10-25 10:19:45 +0000 |
commit | 62b7e4e26f90c59305114882ed6346413806a64a (patch) | |
tree | ccdc7560e2f3b9dc3def4e60e1ad87e52fa23d36 /ndb | |
parent | 36a2a5e27774c35b302ee2a4a424c7330b6fe622 (diff) | |
download | mariadb-git-62b7e4e26f90c59305114882ed6346413806a64a.tar.gz |
using my_gethostbyname_r in Ndb_getInAddr
Diffstat (limited to 'ndb')
-rw-r--r-- | ndb/src/common/portlib/NdbTCP.cpp | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/ndb/src/common/portlib/NdbTCP.cpp b/ndb/src/common/portlib/NdbTCP.cpp index a711a586203..35b0c8c21e4 100644 --- a/ndb/src/common/portlib/NdbTCP.cpp +++ b/ndb/src/common/portlib/NdbTCP.cpp @@ -16,29 +16,27 @@ #include <ndb_global.h> -#include <NdbMutex.h> +#include <my_net.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" int Ndb_getInAddr(struct in_addr * dst, const char *address) { DBUG_ENTER("Ndb_getInAddr"); - struct hostent * hostPtr; - NdbMutex_Lock(&LOCK_gethostbyname); - hostPtr = gethostbyname(address); - if (hostPtr != NULL) { - dst->s_addr = ((struct in_addr *) *hostPtr->h_addr_list)->s_addr; - NdbMutex_Unlock(&LOCK_gethostbyname); - DBUG_RETURN(0); + { + int tmp_errno; + struct hostent tmp_hostent, *hp; + char buff[GETHOSTBYNAME_BUFF_SIZE]; + hp = my_gethostbyname_r(address,&tmp_hostent,buff,sizeof(buff), + &tmp_errno); + if (hp) + { + memcpy(dst, hp->h_addr, min(sizeof(*dst), (size_t) hp->h_length)); + my_gethostbyname_r_free(); + DBUG_RETURN(0); + } + my_gethostbyname_r_free(); } - NdbMutex_Unlock(&LOCK_gethostbyname); - /* Try it as aaa.bbb.ccc.ddd. */ dst->s_addr = inet_addr(address); if (dst->s_addr != |