Commit 760f69c1 authored by unknown's avatar unknown
Browse files

using my_gethostbyname_r in Ndb_getInAddr

parent 3dee030f
Loading
Loading
Loading
Loading
+14 −16
Original line number Diff line number Diff line
@@ -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 !=