aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJamie Lenehan <lenehan@twibble.org>2007-06-02 00:45:29 +0000
committerJamie Lenehan <lenehan@twibble.org>2007-06-02 00:45:29 +0000
commit4a67f352fb1d9475a913ecd31457c301cc11ea37 (patch)
treed48343cccdaac7b9fea80205a2effa0da661b6e4
parentee46004e7812188b6f432d87ebdb41a18d120d57 (diff)
downloadopenembedded-4a67f352fb1d9475a913ecd31457c301cc11ea37.tar.gz
wget 1.9.1: Make it work when you have no IPv6 support in the kernel
- if it fails to create an IPv6 socket because of lack of kernel support switch the internal default to IPv4 and retry the failed connection. The default change will apply to all future sockets (for this run of wget) as well. Should close #1919 and #2390.
-rw-r--r--packages/wget/wget-1.9.1/ipv6-fix.patch31
-rw-r--r--packages/wget/wget_1.9.1.bb5
2 files changed, 34 insertions, 2 deletions
diff --git a/packages/wget/wget-1.9.1/ipv6-fix.patch b/packages/wget/wget-1.9.1/ipv6-fix.patch
new file mode 100644
index 0000000000..315dd25c00
--- /dev/null
+++ b/packages/wget/wget-1.9.1/ipv6-fix.patch
@@ -0,0 +1,31 @@
+If the kernel has IPv6 support then wget tries to create sockets using
+AF_INET6 and then gets an EAFNOSUPPORT error, which it treats as a
+connection failure, resulting in wget not being able to work. This patch
+makes it switch it's default protocol to IPv4 when it sees that IPv6 isn't
+supported in the kernel.
+
+Index: wget-1.9.1/src/connect.c
+===================================================================
+--- wget-1.9.1.orig/src/connect.c 2003-11-02 01:08:22.000000000 +1100
++++ wget-1.9.1/src/connect.c 2007-06-02 01:39:55.000000000 +1000
+@@ -244,12 +244,20 @@
+ {
+ ip_address addr;
+ int sock;
++retry:
+ address_list_copy_one (al, i, &addr);
+
+ sock = connect_to_one (&addr, port, silent);
+ if (sock >= 0)
+ /* Success. */
+ return sock;
++
++ if (errno == EAFNOSUPPORT && ip_default_family == AF_INET6)
++ {
++ DEBUGP (("No IPv6 support, changing default to IPv4.\n"));
++ ip_default_family = AF_INET;
++ goto retry;
++ }
+
+ address_list_set_faulty (al, i);
+
diff --git a/packages/wget/wget_1.9.1.bb b/packages/wget/wget_1.9.1.bb
index 2e576bd2e4..d3858e4e47 100644
--- a/packages/wget/wget_1.9.1.bb
+++ b/packages/wget/wget_1.9.1.bb
@@ -1,12 +1,13 @@
DESCRIPTION = "A console URL download utility featuring HTTP, FTP, and more."
SECTION = "console/network"
DEPENDS = ""
-PR = "r6"
+PR = "r7"
LICENSE = "GPL"
SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
file://m4macros.patch;patch=1 \
- file://autotools.patch;patch=1"
+ file://autotools.patch;patch=1 \
+ file://ipv6-fix.patch;patch=1"
S = "${WORKDIR}/wget-${PV}"
inherit autotools gettext