summaryrefslogtreecommitdiff
path: root/net/parpd
diff options
context:
space:
mode:
authormanu <manu@pkgsrc.org>2017-06-26 09:59:15 +0000
committermanu <manu@pkgsrc.org>2017-06-26 09:59:15 +0000
commit20daec69cabf315a668dabfa6bf9ca3bae5e12c4 (patch)
tree7c8fbf4bc4ca9fcc91a62bba06abead322e25966 /net/parpd
parent130988c25270a0c4d1da3fa52f5bbfae134aad22 (diff)
downloadpkgsrc-20daec69cabf315a668dabfa6bf9ca3bae5e12c4.tar.gz
Fix kqueue usage when forking in the background
This restores parpd functionnality on NetBSD 7.x Submitted upstream as https://dev.marples.name/T127
Diffstat (limited to 'net/parpd')
-rw-r--r--net/parpd/Makefile3
-rw-r--r--net/parpd/distinfo3
-rw-r--r--net/parpd/patches/patch-parpd.c46
3 files changed, 50 insertions, 2 deletions
diff --git a/net/parpd/Makefile b/net/parpd/Makefile
index 949cc942eca..c2bfdfa5052 100644
--- a/net/parpd/Makefile
+++ b/net/parpd/Makefile
@@ -1,7 +1,8 @@
-# $NetBSD: Makefile,v 1.13 2017/03/24 16:49:10 roy Exp $
+# $NetBSD: Makefile,v 1.14 2017/06/26 09:59:15 manu Exp $
#
DISTNAME= parpd-1.7
+PKGREVISION= 1
CATEGORIES= net
MASTER_SITES= ftp://roy.marples.name/pub/parpd/
MASTER_SITES+= http://roy.marples.name/downloads/parpd/
diff --git a/net/parpd/distinfo b/net/parpd/distinfo
index 4a9b25e3f76..90d43abd784 100644
--- a/net/parpd/distinfo
+++ b/net/parpd/distinfo
@@ -1,6 +1,7 @@
-$NetBSD: distinfo,v 1.8 2017/03/24 16:49:10 roy Exp $
+$NetBSD: distinfo,v 1.9 2017/06/26 09:59:15 manu Exp $
SHA1 (parpd-1.7.tar.xz) = 50fab1942ba2ab733a7664ee87d0791bac3e88cc
RMD160 (parpd-1.7.tar.xz) = d223a80ff5018579e4decf28183e9d448d2fd747
SHA512 (parpd-1.7.tar.xz) = d682d4ce012e87e0e9b051d96ead61f6dc273a0e193ea45f556e902924a7d02a25b7913af9ed779dced51ce658457f8308e71b34f7bba3adcf4be23973322b40
Size (parpd-1.7.tar.xz) = 18624 bytes
+SHA1 (patch-parpd.c) = 16978a037b420ba5b1f38a64b5d0b42b8c2cc7f7
diff --git a/net/parpd/patches/patch-parpd.c b/net/parpd/patches/patch-parpd.c
new file mode 100644
index 00000000000..8b5b0d39fbd
--- /dev/null
+++ b/net/parpd/patches/patch-parpd.c
@@ -0,0 +1,46 @@
+$NetBSD: patch-parpd.c,v 1.1 2017/06/26 09:59:16 manu Exp $
+
+Submitted upstream as https://dev.marples.name/T127
+
+From 63d9d122d83dc358c6180d52187026f099ab6389 Mon Sep 17 00:00:00 2001
+From: Emmanuel Dreyfus <manu@netbsd.org>
+Date: Mon, 26 Jun 2017 11:38:39 +0200
+Subject: [PATCH] Fix kqueue usage when forking in the background
+
+NetBSD's kqueue(2) man page says "The queue is not inherited by a
+child created with fork(2)", which means the poll_fd needs to be
+reopen after forking in the background.
+
+This is done by calling eloop_requeue() after daemon().
+---
+ parpd.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git parpd.c parpd.c
+index a178696..dbf26c4 100644
+--- parpd.c
++++ parpd.c
+@@ -718,9 +718,17 @@ main(int argc, char **argv)
+ goto out;
+ }
+
+- if (!fflag && daemon(0, 0) == -1) {
+- syslog(LOG_ERR, "daemon: %m");
+- goto out;
++ if (!fflag) {
++ if (daemon(0, 0) == -1) {
++ syslog(LOG_ERR, "daemon: %m");
++ goto out;
++ }
++
++ /* At least for kqueue, poll_fd gets invalidated by fork */
++ if (eloop_requeue(eloop) == -1) {
++ syslog(LOG_ERR, "eloop_requeue after fork: %m");
++ goto out;
++ }
+ }
+
+ opt = eloop_start(eloop, &sigset);
+--
+2.11.0
+