Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#12186 closed bug (duplicate)

Webpositive can browse only haiku sites

Reported by: lalit Owned by: nobody
Priority: normal Milestone:
Component: Network & Internet Version:
Keywords: Cc:
Blocked By: #8293 Blocking:
Platform: All


In the recent builds I can browse only haiku sites. Can't browse google, youtube etc.

Change History (9)

comment:1 by axeld, 8 years ago

Blocked By: 8293 added
Resolution: duplicate
Status: newclosed

You cannot browse sites that return IPv6 addresses.

comment:2 by jua, 8 years ago

Depending on the situation, this might be unrelated to IPv6. There was another problem with thread-safety of getaddrinfo(), fixed in hrev49371. You could try again with that version and see if it fixes your problem.

comment:3 by diver, 8 years ago

hrev49371, same problem.


telnet 80 Temporary failure in name resolution

with 'add-ons/kernel/network/protocols/ipv6' blacklisted I'm getting:

telnet 80
Trying (null)...
telnet: socket: Address family not supported by protocol family

comment:4 by jua, 8 years ago

@Diver, that sounds more like the IPv6-related problem from #8293

comment:5 by pulkomandy, 8 years ago

Not really. The IPv6 problem would result in telnet trying "(null)", timing out, and then trying the IPv4 address and connecting.

These two errors ("Temporary failure in name resolution") and trying "(null)" anyway even if ipv6 is blacklisted are new problems. Blacklisting the ipv6 driver should be enough to disable DNS resolution of IPv6 addresses (this used to work with the libbind code, not sure with the netresolv one).

comment:6 by lalit, 8 years ago

Still not working in hrev49371. It was working before, just stopped working in the recent builds. Qupzilla browser working fine.

comment:7 by jua, 8 years ago

@PulkoMandy, Diver

The only strange thing here is the "temporary failure in name resolution". Unfortunately I can't reproduce that one. When I try this, I get telnet first trying (null), then correctly saying that the network is unreachable and then it tries with the IPv4 address. When I have the IPv6 module blacklisted, I get the same output as Diver.

Blacklisting the ipv6 driver should be enough to disable DNS resolution of IPv6 addresses

Yes, it should, but that's broken in netresolv (i.e. it does not correctly process the AI_ADDRCONFIG flag), and that's what is tracked in #8293. The bug surfaces now because you had enabled IPv6 in netresolv (via preprocessor define). As mentioned on the mailing list, switching to FreeBSD's getaddrinfo(), which correctly implements AI_ADDRCONFIG, seems to be a good thing to look into.

(And the reason telnet shows "(null)" instead of a proper IPv6 address is simply that we compile telnet without IPv6 support.)

comment:8 by diver, 8 years ago

Tried again and it seems that I only get "temporary failure in name resolution" right after boot. Restarting net_server fixes it, see ticket:12156#comment:38

comment:9 by pulkomandy, 8 years ago

It's more subtle than that. As mentionned in #8293, blacklisting the IPv6 module used to work when using libbind, because AI_ADDRCONFIG checked for its availability (but not for an actually configured interface). So there is one more regression here. So there is a regression.

The fix, however, is the same: switch to a working implementation of getaddrinfo such as FreeBSD one.

Note: See TracTickets for help on using tickets.