RESOLVED FIXED 51783
[SOUP] Fallback to IPv4 does not work on dual-stack pages (IPv6 + IPv4)
https://bugs.webkit.org/show_bug.cgi?id=51783
Summary [SOUP] Fallback to IPv4 does not work on dual-stack pages (IPv6 + IPv4)
michael+webkit
Reported 2010-12-31 11:51:27 PST
Created attachment 77729 [details] strace logfile of luakit michael.stapelberg.de When having not-working IPv6 connectivity (properly configured system but requests result in 'Network unreachable'), Webkit (I tried with luakit and midori) displays an error instead of retrying with IPv4. To reproduce, test on a system with native IPv6 connectivity (or at least tunneled on a different host, so that the system you test on thinks it’s natively connected). Using getaddrinfo(3) to resolve an IPv6-enabled host (for example with the attached getaddrinfo.c example) should result in the following output: michael.stapelberg.de resolved to 2001:4d88:1008:3::ae1 michael.stapelberg.de resolved to 212.86.204.165 Now configure your system to simulate not being able to reach the IPv6 address: # ip6tables -I OUTPUT 1 -d 2001:4d88:1008:3::ae1 -j REJECT --reject-with icmp6-addr-unreachable Then start 'luakit michael.stapelberg.de'. You will see an error page, but the site itself is still reachable via IPv4. Use for example 'wget http://michael.stapelberg.de -O/dev/null' to confirm that other tools handle this case correctly. I’ve attached a complete strace file of 'luakit michael.stapelberg.de'.
Attachments
strace logfile of luakit michael.stapelberg.de (878.52 KB, text/plain)
2010-12-31 11:51 PST, michael+webkit
no flags
getaddrinfo.c (compile with cc -std=c99 -Wall -D_GNU_SOURCE getaddrinfo.c -o getaddrinfo) (1.11 KB, text/x-csrc)
2010-12-31 11:52 PST, michael+webkit
no flags
michael+webkit
Comment 1 2010-12-31 11:52:27 PST
Created attachment 77730 [details] getaddrinfo.c (compile with cc -std=c99 -Wall -D_GNU_SOURCE getaddrinfo.c -o getaddrinfo)
Alexey Proskuryakov
Comment 2 2010-12-31 21:15:20 PST
THis is clearly an issue in network back-end, not in cross-platform WebKit code. Unless I'm mistaken, Midori uses Gtk port of WebKit, which uses SOUP fro networking.
Dominik Röttsches (drott)
Comment 3 2012-10-30 07:21:27 PDT
It seems to me like we need a "happy eyeballs" [1][2] implementation in libsoup to fix that. What do you think, Dan? Should this be hidden from ResourceHandleSoup and just be in the library? Or does WebKit's libsoup backend need to know about the "happy eyeballs" algorithm state? I filed libsoup bug: https://bugzilla.gnome.org/show_bug.cgi?id=687199 [1] http://tools.ietf.org/html/rfc6555 [2] https://bugzilla.mozilla.org/show_bug.cgi?id=684893
Dan Winship
Comment 4 2012-10-30 07:48:29 PDT
Happy eyeballs is about *how fast* you fall back; here it appears that we aren't falling back at all, which is strange. I guess I need to get IPv6 working in my house again... (And the happy eyeballs stuff can be implemented entirely in libsoup (and gio) without ResourceHandleSoup needing to do anything.)
Dominik Röttsches (drott)
Comment 5 2012-10-30 08:05:01 PDT
(In reply to comment #4) > Happy eyeballs is about *how fast* you fall back; here it appears that we aren't falling back at all, which is strange. I guess I need to get IPv6 working in my house again... Fully agree. I meant to comment that if we fix this, we might as well fix it in the right way. Let me know, if you need any help with testing, I have access to native and tunneled IPv6 setups. > (And the happy eyeballs stuff can be implemented entirely in libsoup (and gio) without ResourceHandleSoup needing to do anything.) Okay, thanks.
john
Comment 6 2020-01-17 19:02:08 PST Comment hidden (spam)
Patrick Griffis
Comment 7 2020-01-19 20:24:27 PST
This was fixed with GLib 2.60 and newer
Note You need to log in before you can comment on or make changes to this bug.