diff --git a/ares/ares_init.c b/ares/ares_init.c index bd23234529..c5e35d0606 100644 --- a/ares/ares_init.c +++ b/ares/ares_init.c @@ -506,6 +506,24 @@ DhcpNameServer free(resolvers); } +#elif defined(WATT32) + int i; + + sock_init(); + for (i = 0; def_nameservers[i]; i++) + ; + if (i == 0) + return ARES_SUCCESS; /* use localhost DNS server */ + + nservers = i; + servers = calloc(sizeof(*servers), i); + if (!servers) + return ARES_ENOMEM; + + for (i = 0; def_nameservers[i]; i++) + servers[i].addr.s_addr = htonl(def_nameservers[i]); + status = ARES_EOF; + #else { char *p; diff --git a/ares/ares_private.h b/ares/ares_private.h index 7a755e0046..caff53b345 100644 --- a/ares/ares_private.h +++ b/ares/ares_private.h @@ -27,6 +27,15 @@ #define closesocket(x) close(x) #endif +#ifdef WATT32 +#include +#include +#undef closesocket +#define closesocket(s) close_s(s) +#define select(n,r,w,x,t) select_s(n,r,w,x,t) +#define writev(s,v,c) writev_s(s,v,c) +#endif + #define DEFAULT_TIMEOUT 5 #define DEFAULT_TRIES 4 #ifndef INADDR_NONE diff --git a/ares/ares_process.c b/ares/ares_process.c index 6a7585c0a1..a8dd0c750a 100644 --- a/ares/ares_process.c +++ b/ares/ares_process.c @@ -458,7 +458,7 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server) /* Set the socket non-blocking. */ -#ifdef WIN32 +#if defined(WIN32) || defined(WATT32) flags = 1; ioctlsocket(s, FIONBIO, &flags); #else