From 437d0850ff5e9cf554cfb2790235e5c0b30f94b3 Mon Sep 17 00:00:00 2001 From: pyr <> Date: Thu, 4 Jun 2009 21:38:29 +0000 Subject: simplify the 'family' option parser and make it more evident what we're now doing. ok deraadt@ --- src/lib/libc/net/getaddrinfo.c | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) (limited to 'src/lib/libc/net/getaddrinfo.c') diff --git a/src/lib/libc/net/getaddrinfo.c b/src/lib/libc/net/getaddrinfo.c index 87125c89cc..2b96ea2380 100644 --- a/src/lib/libc/net/getaddrinfo.c +++ b/src/lib/libc/net/getaddrinfo.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getaddrinfo.c,v 1.68 2009/06/04 18:06:35 pyr Exp $ */ +/* $OpenBSD: getaddrinfo.c,v 1.69 2009/06/04 21:38:29 pyr Exp $ */ /* $KAME: getaddrinfo.c,v 1.31 2000/08/31 17:36:43 itojun Exp $ */ /* @@ -1170,39 +1170,21 @@ _dns_getaddrinfo(const char *name, const struct addrinfo *pai, switch (pai->ai_family) { case AF_UNSPEC: - if (_resp->family[0] == -1) { - /* prefer IPv4 by default*/ - q.qclass = C_IN; - q.qtype = T_A; - q.answer = buf->buf; - q.anslen = sizeof(buf->buf); - q.next = &q2; - q2.qclass = C_IN; - q2.qtype = T_AAAA; - q2.answer = buf2->buf; - q2.anslen = sizeof(buf2->buf); - break; - } - /* respect user supplied order */ q.qclass = C_IN; - if (_resp->family[0] == AF_INET6) - q.qtype = T_AAAA; - else - q.qtype = T_A; + q.qtype = (_resp->family[0] == AF_INET6) ? T_AAAA : T_A; q.answer = buf->buf; q.anslen = sizeof(buf->buf); + q.next = &q2; + if (_resp->family[1] == -1) { + /* stop here if only one family was given */ q.next = NULL; break; } - q.next = &q2; q2.qclass = C_IN; - if (_resp->family[1] == AF_INET6) - q2.qtype = T_AAAA; - else - q2.qtype = T_A; + q2.qtype = (_resp->family[1] == AF_INET6) ? T_AAAA : T_A; q2.answer = buf2->buf; q2.anslen = sizeof(buf2->buf); break; -- cgit v1.2.3-55-g6feb