summaryrefslogtreecommitdiff
path: root/mail
diff options
context:
space:
mode:
authorabs <abs>2009-01-12 18:59:24 +0000
committerabs <abs>2009-01-12 18:59:24 +0000
commita1cb32fa912f75821e24f5691785f413ffc5b225 (patch)
tree868604ad851bfdbbb077deb11595d06e6232486e /mail
parent56011077071c100f7e9321b5a323c330e3c9c412 (diff)
downloadpkgsrc-a1cb32fa912f75821e24f5691785f413ffc5b225.tar.gz
Update exim to 4.69nb4
- Add support for getifaddrs() and enable on NetBSD - submitted back to exim bugzilla as http://bugs.exim.org/show_bug.cgi?id=802 - Increase size of addrbuf[512] used in old style ioctl() version of os_common_find_running_interfaces() Fixes issue on NetBSD 5.0
Diffstat (limited to 'mail')
-rw-r--r--mail/exim/Makefile4
-rw-r--r--mail/exim/distinfo4
-rw-r--r--mail/exim/patches/patch-ac114
-rw-r--r--mail/exim/patches/patch-ad12
4 files changed, 131 insertions, 3 deletions
diff --git a/mail/exim/Makefile b/mail/exim/Makefile
index 29d1bd5726d..92ed5290f4f 100644
--- a/mail/exim/Makefile
+++ b/mail/exim/Makefile
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.93 2008/11/10 17:21:36 wiz Exp $
+# $NetBSD: Makefile,v 1.94 2009/01/12 18:59:24 abs Exp $
DISTNAME= exim-4.69
-PKGREVISION= 3
+PKGREVISION= 4
CATEGORIES= mail net
MASTER_SITES= ftp://ftp.exim.org/pub/exim/exim4/ \
ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/exim4/ \
diff --git a/mail/exim/distinfo b/mail/exim/distinfo
index a59f77be0d6..ea4ad7ba696 100644
--- a/mail/exim/distinfo
+++ b/mail/exim/distinfo
@@ -1,9 +1,11 @@
-$NetBSD: distinfo,v 1.39 2008/01/14 18:57:39 adam Exp $
+$NetBSD: distinfo,v 1.40 2009/01/12 18:59:24 abs Exp $
SHA1 (exim-4.69.tar.bz2) = 321e238b6e6b32498110511ce72a911538305a39
RMD160 (exim-4.69.tar.bz2) = ae97c807c63f858ba4a0ab402677225da9337d05
Size (exim-4.69.tar.bz2) = 1658939 bytes
SHA1 (patch-aa) = 93dca43408fb837deb95d2b22502c64559780f7c
SHA1 (patch-ab) = 1c6e7882346974390c22e7b9e09a76c5ed670d1d
+SHA1 (patch-ac) = de96032a9cf5450101cc73d615d374ddf6817fee
+SHA1 (patch-ad) = 804ab58f454f7e100c117f2cec9cf478375c1752
SHA1 (patch-ae) = 6cb0f00d159de7c342a55b09fb87ab533c5670bf
SHA1 (patch-ag) = 8512795060ad913f4699c277867fd24e7a785519
diff --git a/mail/exim/patches/patch-ac b/mail/exim/patches/patch-ac
new file mode 100644
index 00000000000..a2faff17aeb
--- /dev/null
+++ b/mail/exim/patches/patch-ac
@@ -0,0 +1,114 @@
+$NetBSD: patch-ac,v 1.12 2009/01/12 18:59:24 abs Exp $
+
+--- src/os.c.orig 2007-01-08 10:50:18.000000000 +0000
++++ src/os.c
+@@ -463,6 +463,75 @@ calls the common function; on Linux it c
+ This function finds the addresses of all the running interfaces on the machine.
+ A chain of blocks containing the textual form of the addresses is returned.
+
++getifaddrs() provides a sane consistent way to query this on modern OSs,
++otherwise fall back to a maze of twisty ioctl() calls
++
++Arguments: none
++Returns: a chain of ip_address_items, each pointing to a textual
++ version of an IP address, with the port field set to zero
++*/
++
++
++#ifndef NO_FIND_INTERFACES
++
++#ifdef HAVE_GETIFADDRS
++
++#include <ifaddrs.h>
++
++ip_address_item *
++os_common_find_running_interfaces(void)
++{
++struct ifaddrs *ifalist = NULL;
++ip_address_item *yield = NULL;
++ip_address_item *last = NULL;
++ip_address_item *next;
++
++if (getifaddrs(&ifalist) != 0)
++ log_write(0, LOG_PANIC_DIE, "Unable to call getifaddrs: %d %s",
++ errno, strerror(errno));
++
++struct ifaddrs *ifa;
++for (ifa = ifalist; ifa != NULL; ifa = ifa->ifa_next)
++ {
++ if (ifa->ifa_addr->sa_family != AF_INET
++#if HAVE_IPV6
++ && ifa->ifa_addr->sa_family != AF_INET6
++#endif /* HAVE_IPV6 */
++ )
++ continue;
++
++ if ( !(ifa->ifa_flags & IFF_UP) ) /* Only want 'UP' interfaces */
++ continue;
++
++ /* Create a data block for the address, fill in the data, and put it on the
++ chain. */
++
++ next = store_get(sizeof(ip_address_item));
++ next->next = NULL;
++ next->port = 0;
++ (void)host_ntoa(-1, ifa->ifa_addr, next->address, NULL);
++
++ if (yield == NULL)
++ yield = last = next;
++ else
++ {
++ last->next = next;
++ last = next;
++ }
++
++ DEBUG(D_interface) debug_printf("Actual local interface address is %s (%s)\n",
++ last->address, ifa->ifa_name);
++ }
++
++/* free the list of addresses, and return the chain of data blocks. */
++
++freeifaddrs (ifalist);
++return yield;
++}
++
++#else /* HAVE_GETIFADDRS */
++
++/*
+ Problems:
+
+ (1) Solaris 2 has the SIOGIFNUM call to get the number of interfaces, but
+@@ -486,15 +555,8 @@ Problems:
+ the former, calling the latter does no harm, but it causes grief on Linux and
+ BSD systems in the case of IP aliasing, so a means of cutting it out is
+ provided.
+-
+-Arguments: none
+-Returns: a chain of ip_address_items, each pointing to a textual
+- version of an IP address, with the port field set to zero
+ */
+
+-
+-#ifndef NO_FIND_INTERFACES
+-
+ /* If there is IPv6 support, and SIOCGLIFCONF is defined, define macros to
+ use these new, longer versions of the old IPv4 interfaces. Otherwise, define
+ the macros to use the historical versions. */
+@@ -556,7 +618,7 @@ char *cp;
+ char buf[MAX_INTERFACES*sizeof(struct V_ifreq)];
+ struct sockaddr *addrp;
+ size_t len = 0;
+-char addrbuf[256];
++char addrbuf[512];
+
+ /* We have to create a socket in order to do ioctls on it to find out
+ what we want to know. */
+@@ -701,6 +763,8 @@ for (cp = buf; cp < buf + ifc.V_ifc_len;
+ return yield;
+ }
+
++#endif /* HAVE_GETIFADDRS */
++
+ #else /* NO_FIND_INTERFACES */
+
+ /* Some experimental or developing OS (e.g. GNU/Hurd) do not have the ioctls,
diff --git a/mail/exim/patches/patch-ad b/mail/exim/patches/patch-ad
new file mode 100644
index 00000000000..63b93015617
--- /dev/null
+++ b/mail/exim/patches/patch-ad
@@ -0,0 +1,12 @@
+$NetBSD: patch-ad,v 1.11 2009/01/12 18:59:24 abs Exp $
+
+--- OS/os.h-NetBSD.orig 2007-06-27 09:46:28.000000000 +0100
++++ OS/os.h-NetBSD
+@@ -3,6 +3,7 @@
+ /* Exim: OS-specific C header file for NetBSD */
+
+ #define HAVE_BSD_GETLOADAVG
++#define HAVE_GETIFADDRS
+ #define HAVE_MMAP
+ #define HAVE_SYS_MOUNT_H
+ #define SIOCGIFCONF_GIVES_ADDR