- struct hostent *hostPtr = NULL;
- struct in_addr addr;
-
- memset (resolvedHost, '\0',MAXBUF);
- if(unresolvedHost == NULL)
- return(ERROR);
- if ((inet_aton(unresolvedHost,&addr)) == 0)
- return(ERROR);
- hostPtr = gethostbyaddr ((char *)&addr.s_addr,sizeof(addr.s_addr),AF_INET);
- if (hostPtr != NULL)
- snprintf(resolvedHost,MAXBUF,"%s",hostPtr->h_name);
- else
- snprintf(resolvedHost,MAXBUF,"%s",unresolvedHost);
- return (TRUE);
+ DNS d(Config->DNSServer);
+ int fd = d.ReverseLookup(unresolvedHost);
+ if (fd < 0)
+ return 0;
+ time_t T = time(NULL)+1;
+ while ((!d.HasResult()) && (time(NULL)<T));
+ std::string ipaddr = d.GetResult();
+ strlcpy(resolvedHost,ipaddr.c_str(),MAXBUF);
+ return (ipaddr != "");