summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mail/exim/Makefile4
-rw-r--r--mail/exim/distinfo2
-rw-r--r--mail/exim/files/patch-src::rda.c36
3 files changed, 39 insertions, 3 deletions
diff --git a/mail/exim/Makefile b/mail/exim/Makefile
index 256152fc46d6..07f686083eb9 100644
--- a/mail/exim/Makefile
+++ b/mail/exim/Makefile
@@ -7,7 +7,7 @@
PORTNAME= exim
PORTVERSION= ${EXIM_VERSION}
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= mail
MASTER_SITES= ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/exim4/ \
http://www.exim.org/ftp/exim4/ \
@@ -29,7 +29,7 @@ MAN8= exim.8
EXIM_VERSION= 4.12
EXIM_DOCVERSION= 4.10
-EXISCAN_VERSION= 4.12-20
+EXISCAN_VERSION= 4.12-22
PLIST_SUB+= EXIM_VERSION="${EXIM_VERSION}"
diff --git a/mail/exim/distinfo b/mail/exim/distinfo
index cf04558e6e66..9409ba32df23 100644
--- a/mail/exim/distinfo
+++ b/mail/exim/distinfo
@@ -1,3 +1,3 @@
MD5 (exim-4.12.tar.bz2) = 7aed2a66295a7702b9a9394ec2bc5ffd
MD5 (exim-texinfo-4.10.tar.bz2) = 2a2a34a2457d249d568a58e985f263c0
-MD5 (exiscan-4.12-20.tar.bz2) = 06fb37c2ea38f15d1d31221a1f32f621
+MD5 (exiscan-4.12-22.tar.bz2) = 42f9edb8ec86ff554ef5acefc31d6e19
diff --git a/mail/exim/files/patch-src::rda.c b/mail/exim/files/patch-src::rda.c
new file mode 100644
index 000000000000..751352e6ba14
--- /dev/null
+++ b/mail/exim/files/patch-src::rda.c
@@ -0,0 +1,36 @@
+*** src/rda.c.orig Wed Dec 18 10:28:03 2002
+--- src/rda.c Wed Dec 18 11:35:25 2002
+***************
+*** 489,494 ****
+--- 489,495 ----
+ int yield, status;
+ pid_t pid;
+ uschar *data;
++ void (*oldsignal)(int);
+
+ DEBUG(D_route) debug_printf("rda_interpret (%s): %s\n",
+ (rdata->isfile)? "file" : "string", rdata->string);
+***************
+*** 542,547 ****
+--- 543,553 ----
+ log_write(0, LOG_MAIN|LOG_PANIC_DIE, "creation of pipe for filter or "
+ ":include: failed for %s: %s", rname, strerror(errno));
+
++ /* Ensure that SIGCHLD is set to SIG_DFL before forking, so that the child
++ process can be waited for. We sometimes get here with it set otherwise. Save
++ the old state for resetting on the wait. */
++
++ oldsignal = signal(SIGCHLD, SIG_DFL);
+ if ((pid = fork()) == 0)
+ {
+ header_line *waslast = header_last; /* Save last header */
+***************
+*** 831,836 ****
+--- 837,843 ----
+ }
+
+ close(fd);
++ signal(SIGCHLD, oldsignal); /* restore */
+ return yield;
+
+ /* Come here is there's a shambles in transferring the data over the pipe. */