summaryrefslogtreecommitdiff
path: root/mail/dbmail-devel/files/patch-2.0.4_bug199_server.c
diff options
context:
space:
mode:
authorPav Lucistnik <pav@FreeBSD.org>2005-07-18 16:04:16 +0000
committerPav Lucistnik <pav@FreeBSD.org>2005-07-18 16:04:16 +0000
commit05065d99c78a53f6ab97086574a01d75be79decc (patch)
tree2f9f09b2b30cc41ccd58808030a38660205a46fb /mail/dbmail-devel/files/patch-2.0.4_bug199_server.c
parent- Update to 1.3.2 (diff)
- Patch nine bugs:
#79 - INTERNALDATE reponses do not conform to RFC #145 - LMTP loses return-path #177 - Compile Fails on FreeBSD (fixes compilation on FreeBSD 4.X) #184 - socklen_t issue #190 - huge load if database crash #198 - DBMail processes killing each other #199 - spare child creates zombie #214 - dbmail-smtp dumps core with double free #216 - malformed header prevents delivery - Fix RC_SUBR usage PR: ports/83437, also ports/80736, ports/82437, ports/83575 Submitted by: Mark Starovoytov <mark@kikg.ifmo.ru>, parts also by: Radim Kolar <hsn@netmag.cz>, thompsa, Marcus Grando <marcus@corp.grupos.com.br> Approved by: maintainer timeout (2 months on oldest PR)
Diffstat (limited to 'mail/dbmail-devel/files/patch-2.0.4_bug199_server.c')
-rw-r--r--mail/dbmail-devel/files/patch-2.0.4_bug199_server.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/mail/dbmail-devel/files/patch-2.0.4_bug199_server.c b/mail/dbmail-devel/files/patch-2.0.4_bug199_server.c
new file mode 100644
index 000000000000..6786e6c8fc60
--- /dev/null
+++ b/mail/dbmail-devel/files/patch-2.0.4_bug199_server.c
@@ -0,0 +1,35 @@
+Index: server.c
+===================================================================
+--- server.c (revision 1763)
++++ server.c (revision 1787)
+@@ -69,7 +69,7 @@
+
+ act.sa_sigaction = ParentSigHandler;
+ sigemptyset(&act.sa_mask);
+- act.sa_flags = SA_SIGINFO;
++ act.sa_flags = SA_SIGINFO | SA_NOCLDSTOP;
+
+ sigaction(SIGCHLD, &act, 0);
+ sigaction(SIGINT, &act, 0);
+@@ -152,6 +152,7 @@
+
+ void ParentSigHandler(int sig, siginfo_t * info, void *data)
+ {
++ pid_t chpid;
+ int saved_errno = errno;
+
+ if (ParentPID != getpid()) {
+@@ -175,7 +176,12 @@
+ break;
+
+ case SIGCHLD:
+- break; /* ignore, wait for child in main loop */
++ /* ignore, wait for child in main loop */
++ /* but we need to catch zombie */
++ if ((chpid = waitpid(-1,&sig,WNOHANG)) > 0)
++ scoreboard_release(chpid);
++
++ break;
+
+ case SIGHUP:
+ trace(TRACE_DEBUG,