using my_gethostbyname_r in Ndb_getInAddr

parent 36a2a5e2
......@@ -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);
{
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);
}
NdbMutex_Unlock(&LOCK_gethostbyname);
my_gethostbyname_r_free();
}
/* Try it as aaa.bbb.ccc.ddd. */
dst->s_addr = inet_addr(address);
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