summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mail/libetpan/Makefile4
-rw-r--r--mail/libetpan/distinfo3
-rw-r--r--mail/libetpan/patches/patch-af66
3 files changed, 70 insertions, 3 deletions
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: