X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/7efa5bdcf82d1b62c0299dc9f29013ac36ff75c2..refs/heads/wip.getaddrinfo:/src/addrfam.c diff --git a/src/addrfam.c b/src/addrfam.c index 13f2a03..99e2fab 100644 --- a/src/addrfam.c +++ b/src/addrfam.c @@ -296,11 +296,14 @@ int adns_text2addr(const char *text, uint16_t port, adns_queryflags flags, sa->sa_family= af; *portp = htons(port); - int r= inet_pton(af,parse,dst); - if (!r) INVAL("inet_pton rejected"); - if (r<0) { - af_debug("inet_pton failed on `%s'", parse); - return errno; + if (af == AF_INET && !(flags & adns_qf_addrlit_ipv4_quadonly)) { + /* we have to use inet_aton to deal with non-dotted-quad literals */ + int r= inet_aton(parse,&SIN(sa)->sin_addr); + if (!r) INVAL("inet_aton rejected"); + } else { + int r= inet_pton(af,parse,dst); + if (!r) INVAL("inet_pton rejected"); + assert(r>0); } if (scopestr) {