author | "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com> |
Thu Apr 11 15:24:46 2013 +0200 (2013-04-11) | |
changeset 3202 | 9aa33c435b0b |
parent 1201 | c9967a6e3b25 |
permissions | -rw-r--r-- |
yann@1201 | 1 |
Original patch from: gentoo/src/patchsets/glibc/2.9/0080_all_glibc-2.10-dns-no-gethostbyname4.patch |
yann@1201 | 2 |
|
yann@1201 | 3 |
-= BEGIN original header =- |
yann@1201 | 4 |
http://sourceware.org/bugzilla/show_bug.cgi?id=7060 |
yann@1201 | 5 |
http://bugs.gentoo.org/250468 |
yann@1201 | 6 |
|
yann@1201 | 7 |
The gethostbyname4() lookup method is problematic since it fires out both |
yann@1201 | 8 |
the A and AAAA DNS queries in parallel and over the same socket. This |
yann@1201 | 9 |
should work in theory, but it turns out that many cheap DSL modems and |
yann@1201 | 10 |
similar devices have buggy DNS servers - if the AAAA query arrives too |
yann@1201 | 11 |
quickly after the A query, the server will generate only a single reply |
yann@1201 | 12 |
with the A query id but returning an error for the AAAA query; we get |
yann@1201 | 13 |
stuck waiting for the second reply. |
yann@1201 | 14 |
|
yann@1201 | 15 |
For gethostbyname4() users affected, disabling IPv6 in the system might |
yann@1201 | 16 |
work around the issue, unfortunately it only helps with applications |
yann@1201 | 17 |
using AI_ADDRCONFIG (e.g. Firefox); some (notably e.g. Pidgin) neglect |
yann@1201 | 18 |
to do that. |
yann@1201 | 19 |
|
yann@1201 | 20 |
Real fix should be using separate ports for the A and AAAA queries. |
yann@1201 | 21 |
|
yann@1201 | 22 |
-= END original header =- |
yann@1201 | 23 |
|
yann@1201 | 24 |
diff -durN glibc-2_9.orig/resolv/Versions glibc-2_9/resolv/Versions |
yann@1201 | 25 |
--- glibc-2_9.orig/resolv/Versions 2008-08-01 19:15:34.000000000 +0200 |
yann@1201 | 26 |
+++ glibc-2_9/resolv/Versions 2009-02-02 22:00:46.000000000 +0100 |
yann@1201 | 27 |
@@ -102,7 +102,7 @@ |
yann@1201 | 28 |
_nss_dns_gethostbyname_r; _nss_dns_getnetbyaddr_r; |
yann@1201 | 29 |
_nss_dns_getnetbyname_r; _nss_dns_getcanonname_r; |
yann@1201 | 30 |
_nss_dns_gethostbyaddr2_r; |
yann@1201 | 31 |
- _nss_dns_gethostbyname4_r; |
yann@1201 | 32 |
+# _nss_dns_gethostbyname4_r; |
yann@1201 | 33 |
} |
yann@1201 | 34 |
} |
yann@1201 | 35 |