nslookup: glibc + IPv6 address of DNS server don't mix (yet)
This commit is contained in:
parent
de7a52fff2
commit
249d948e39
@ -133,14 +133,19 @@ static void set_default_dns(const char *server)
|
|||||||
_res.nsaddr_list[0] = lsa->u.sin;
|
_res.nsaddr_list[0] = lsa->u.sin;
|
||||||
}
|
}
|
||||||
#if ENABLE_FEATURE_IPV6
|
#if ENABLE_FEATURE_IPV6
|
||||||
// Hoping libc will handle an IPv4 address there too,
|
/* Hoped libc can cope with IPv4 address there too.
|
||||||
// if it so happens that family is indeed AF_INET
|
* No such luck, glibc 2.4 segfaults even with IPv6,
|
||||||
// if (lsa->u.sa.sa_family == AF_INET6) {
|
* maybe I misunderstand how to make glibc use IPv6 addr?
|
||||||
|
* (uclibc 0.9.31+ should work) */
|
||||||
|
if (lsa->u.sa.sa_family == AF_INET6) {
|
||||||
|
// glibc neither SEGVs nor sends any dgrams with this
|
||||||
|
// (strace shows no socket ops):
|
||||||
|
//_res.nscount = 0;
|
||||||
_res._u._ext.nscount = 1;
|
_res._u._ext.nscount = 1;
|
||||||
/* store a pointer to part of malloc'ed lsa */
|
/* store a pointer to part of malloc'ed lsa */
|
||||||
_res._u._ext.nsaddrs[0] = &lsa->u.sin6;
|
_res._u._ext.nsaddrs[0] = &lsa->u.sin6;
|
||||||
/* must not free(lsa)! */
|
/* must not free(lsa)! */
|
||||||
// }
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user