#include "tree234.h"
/* Solaris needs <sys/sockio.h> for SIOCATMARK. */
-#ifdef HAVE_SYS_SOCKIO_H
+#ifndef SIOCATMARK
#include <sys/sockio.h>
#endif
static int sk_nextaddr(SockAddr addr)
{
#ifndef NO_IPV6
- if (addr->ai->ai_next) {
+ if (addr->ai && addr->ai->ai_next) {
addr->ai = addr->ai->ai_next;
addr->family = addr->ai->ai_family;
return TRUE;
* into local reality.
*/
address_family = (address_family == ADDRTYPE_IPV4 ? AF_INET :
- address_family == ADDRTYPE_IPV6 ? AF_INET6 : AF_UNSPEC);
+#ifndef NO_IPV6
+ address_family == ADDRTYPE_IPV6 ? AF_INET6 :
+#endif
+ AF_UNSPEC);
#ifndef NO_IPV6
/* Let's default to IPv6.
*/
s = socket(address_family, SOCK_STREAM, 0);
+#ifndef NO_IPV6
/* If the host doesn't support IPv6 try fallback to IPv4. */
if (s < 0 && address_family == AF_INET6) {
address_family = AF_INET;
s = socket(address_family, SOCK_STREAM, 0);
}
+#endif
if (s < 0) {
ret->error = strerror(errno);
else
*canonicalname = dupstr(ret->hostname);
#ifndef NO_IPV6
- ret->ais = NULL;
+ ret->ai = ret->ais = NULL;
#else
ret->addresses = NULL;
+ ret->curraddr = ret->naddresses = 0;
#endif
return ret;
}