aboutsummaryrefslogtreecommitdiffstats
path: root/dns.c
diff options
context:
space:
mode:
Diffstat (limited to 'dns.c')
-rwxr-xr-xdns.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/dns.c b/dns.c
index c45314950..33974aa14 100755
--- a/dns.c
+++ b/dns.c
@@ -151,24 +151,25 @@ static int dns_parse_answer(void *context,
return 0;
}
+#if defined(res_ninit)
+#define HAS_RES_NINIT
+#else
+#warning "Warning, res_ninit is missing... Could have reentrancy issues"
+#endif
+
int ast_search_dns(void *context,
const char *dname, int class, int type,
int (*callback)(void *context, u_char *answer, int len, u_char *fullanswer))
{
-#ifdef linux
+#ifdef HAS_RES_NINIT
struct __res_state dnsstate;
#endif
char answer[MAX_SIZE];
int res, ret = -1;
-#ifdef linux
- #ifndef __UCLIBC__
- res_ninit(&dnsstate);
- res = res_nsearch(&dnsstate, dname, class, type, answer, sizeof(answer));
- #else
- res_init();
- res = res_search(dname, class, type, answer, sizeof(answer));
- #endif
+#ifdef HAS_RES_NINIT
+ res_ninit(&dnsstate);
+ res = res_nsearch(&dnsstate, dname, class, type, answer, sizeof(answer));
#else
res_init();
res = res_search(dname, class, type, answer, sizeof(answer));
@@ -185,12 +186,8 @@ int ast_search_dns(void *context,
else
ret = 1;
}
-#if defined(linux)
- #ifndef __UCLIBC__
- res_nclose(&dnsstate);
- #else
- res_close();
- #endif
+#ifdef HAS_RES_NINIT
+ res_nclose(&dnsstate);
#else
#ifndef __APPLE__
res_close();