From ac119c07750657bd9ffc30664e294e80140d658b Mon Sep 17 00:00:00 2001 From: smb Date: Fri, 25 Jan 2008 18:26:31 +0000 Subject: FIx a bug where the remote IMAP server has a AAAA record but there's no IPv6 connectivity from the client to that site. Prior to this fix, the fallback to IPv4 wasn't working properly. (The fix should be in the next release of libetpan.) --- mail/libetpan/Makefile | 4 +-- mail/libetpan/distinfo | 3 +- mail/libetpan/patches/patch-af | 66 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 mail/libetpan/patches/patch-af (limited to 'mail/libetpan') diff --git a/mail/libetpan/Makefile b/mail/libetpan/Makefile index 5084883cf5b..5affc2875d4 100644 --- a/mail/libetpan/Makefile +++ b/mail/libetpan/Makefile @@ -1,8 +1,8 @@ -# $NetBSD: Makefile,v 1.16 2008/01/18 05:08:26 tnn Exp $ +# $NetBSD: Makefile,v 1.17 2008/01/25 18:26:31 smb Exp $ # DISTNAME= libetpan-0.52 -PKGREVISION= 2 +PKGREVISION= 3 CATEGORIES= mail MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=libetpan/} diff --git a/mail/libetpan/distinfo b/mail/libetpan/distinfo index 411e6610cb6..50993edbe52 100644 --- a/mail/libetpan/distinfo +++ b/mail/libetpan/distinfo @@ -1,6 +1,7 @@ -$NetBSD: distinfo,v 1.8 2007/10/27 13:55:27 wiz Exp $ +$NetBSD: distinfo,v 1.9 2008/01/25 18:26:32 smb Exp $ SHA1 (libetpan-0.52.tar.gz) = e2fdf76b471e57a153bad4c4def7fde512385021 RMD160 (libetpan-0.52.tar.gz) = 3e826d57987780b204c9074a9c225e960f214d66 Size (libetpan-0.52.tar.gz) = 1611405 bytes SHA1 (patch-aa) = e783adf544c9a63df584815ee4b033249cecf0ff +SHA1 (patch-af) = f7f6977a0bdd709eaba1efed216eee6a3a0f542b diff --git a/mail/libetpan/patches/patch-af b/mail/libetpan/patches/patch-af new file mode 100644 index 00000000000..2eaec72d53f --- /dev/null +++ b/mail/libetpan/patches/patch-af @@ -0,0 +1,66 @@ +$NetBSD: patch-af,v 1.1 2008/01/25 18:26:32 smb Exp $ + +--- src/data-types/connect.c.orig 2007-08-06 17:32:30.000000000 -0400 ++++ src/data-types/connect.c 2008-01-25 13:15:13.000000000 -0500 +@@ -88,6 +88,21 @@ + return 0; + } + ++#ifdef HAVE_IPV6 ++static int verify_sock_errors(int s) ++{ ++ uint len; ++ int val; ++ len = sizeof(val); ++ if (getsockopt(s, SOL_SOCKET, SO_ERROR, &val, &len) < 0) { ++ return -1; ++ } else if (val != 0) { ++ return -1; ++ } ++ return 0; ++} ++#endif ++ + static int wait_connect(int s, int r) + { + fd_set fds; +@@ -206,6 +221,7 @@ + + for (ai = res; ai != NULL; ai = ai->ai_next) { + s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); ++ + if (s == -1) + continue; + +@@ -239,9 +255,23 @@ + + r = connect(s, ai->ai_addr, ai->ai_addrlen); + r = wait_connect(s, r); ++ ++ if (r != -1) { ++ r = verify_sock_errors(s); ++ } ++ + if (r == -1) { ++ if (ai->ai_next) { ++#ifdef WIN32 ++ closesocket(s); ++#else ++ close(s); ++#endif ++ continue; ++ } else { + goto close_socket; + } ++ } + /* if we're here, we're good */ + break; + } +@@ -252,7 +282,6 @@ + if (ai == NULL) + goto err; + #endif +- + return s; + + close_socket: -- cgit v1.2.3