+ serv_addr.sin_addr.s_addr = (host && *host!='*') ? inet_addr(host) : htonl(INADDR_ANY);
+ if ( serv_addr.sin_addr.s_addr == INADDR_NONE ) {
+ struct hostent *ip_host;
+
+ /*
+ * Can't parse address: it's a DNS Name
+ */
+ ip_host = gethostbyname(host);
+ if ( ip_host && ip_host->h_addrtype == AF_INET ) {
+ memcpy(&serv_addr.sin_addr.s_addr, ip_host->h_addr_list[0],
+ sizeof(&serv_addr.sin_addr.s_addr));
+ } else {
+ tlog(TL_CRIT,"gethostbyname: %s - %s", host, hstrerror(h_errno));
+ close(sockfd);
+ return -1;
+ }
+ }