X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=resolver.c;h=83afd2f50654b9ca037a6ee8e579dddad6e9d6dc;hb=ec2ae5fa0ae79baedb567ad18e09e17305aa89d1;hp=d104c363f775de7dcb3e40e1829de2e54c42ce46;hpb=08b62a6c691fe0e772c74de9d60803afcb7d2aa9;p=secnet.git diff --git a/resolver.c b/resolver.c index d104c36..83afd2f 100644 --- a/resolver.c +++ b/resolver.c @@ -47,9 +47,9 @@ static bool_t resolve_request(void *sst, cstring_t name, ca.ia.sin.sin_family=AF_INET; ca.ia.sin.sin_port=htons(port); if (inet_aton(trimmed,&ca.ia.sin.sin_addr)) - cb(cst,&ca,1,1); + cb(cst,&ca,1,1,0); else - cb(cst,0,0,0); + cb(cst,0,0,0,"invalid IP address"); return True; } @@ -95,7 +95,7 @@ static void resolver_afterpoll(void *sst, struct pollfd *fds, int nfds) if (rv==0) { q=qp; if (ans->status!=adns_s_ok) { - q->answer(q->cst,NULL,0,0); /* Failure */ + q->answer(q->cst,NULL,0,0,adns_strerror(ans->status)); free(q); free(ans); } else { @@ -115,6 +115,11 @@ static void resolver_afterpoll(void *sst, struct pollfd *fds, int nfds) case AF_INET: assert(ra->len == sizeof(ca->ia.sin)); break; +#ifdef CONFIG_IPV6 + case AF_INET6: + assert(ra->len == sizeof(ca->ia.sin6)); + break; +#endif /*CONFIG_IPV6*/ default: /* silently skip unexpected AFs from adns */ continue; @@ -122,7 +127,7 @@ static void resolver_afterpoll(void *sst, struct pollfd *fds, int nfds) memcpy(&ca->ia,&ra->addr,ra->len); wslot++; } - q->answer(q->cst,ca_buf,wslot,total); + q->answer(q->cst,ca_buf,wslot,total,0); free(q); free(ans); }