if (NULL == host) {
s->s.SetAnyAddr();
s->s.SetPort(port);
+ if (!Ip::EnableIpv6)
+ s->s.SetIPv4();
debugs(3, 3, "http(s)_port: found Listen on wildcard address: *:" << s->s.GetPort() );
} else if ( s->s = host ) { /* check/parse numeric IPA */
s->s.SetPort(port);
+ if (!Ip::EnableIpv6)
+ s->s.SetIPv4();
debugs(3, 3, "http(s)_port: Listen on Host/IP: " << host << " --> " << s->s);
} else if ( s->s.GetHostByName(host) ) { /* check/parse for FQDN */
/* dont use ipcache */
s->defaultsite = xstrdup(host);
s->s.SetPort(port);
+ if (!Ip::EnableIpv6)
+ s->s.SetIPv4();
debugs(3, 3, "http(s)_port: found Listen as Host " << s->defaultsite << " on IP: " << s->s);
} else {
debugs(3, 0, "http(s)_port: failed to resolve Host/IP: " << host);
// Test for v4-mapping capability
int tos = 0;
- if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &tos, sizeof(int)) < 0) {
+ if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &tos, sizeof(int)) == 0) {
debugs(3, 2, "Detected IPv6 hybrid or v4-mapping stack...");
EnableIpv6 |= IPV6_SPECIAL_V4MAPPING;
} else {