summaryrefslogtreecommitdiffstats
path: root/usr.sbin/named/ns_maint.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/named/ns_maint.c')
-rw-r--r--usr.sbin/named/ns_maint.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/usr.sbin/named/ns_maint.c b/usr.sbin/named/ns_maint.c
index 03cbf99..111ac82 100644
--- a/usr.sbin/named/ns_maint.c
+++ b/usr.sbin/named/ns_maint.c
@@ -1,6 +1,6 @@
#if !defined(lint) && !defined(SABER)
static char sccsid[] = "@(#)ns_maint.c 4.39 (Berkeley) 3/2/91";
-static char rcsid[] = "$Id: ns_maint.c,v 1.2 1995/05/30 03:48:53 rgrimes Exp $";
+static char rcsid[] = "$Id: ns_maint.c,v 1.3 1995/08/20 21:18:49 peter Exp $";
#endif /* not lint */
/*
@@ -362,6 +362,9 @@ startxfer(zp)
#ifdef GEN_AXFR
char class_str[10];
#endif
+#ifdef POSIX_SIGNALS
+ sigset_t sset;
+#endif
dprintf(1, (ddt, "startxfer() %s\n", zp->z_origin));
@@ -441,13 +444,23 @@ startxfer(zp)
gettime(&tt);
#ifndef SYSV
+#if defined(POSIX_SIGNALS)
+ sigemptyset(&sset);
+ sigaddset(&sset,SIGCHLD);
+ sigprocmask(SIG_BLOCK,&sset,NULL);
+#else
omask = sigblock(sigmask(SIGCHLD));
#endif
+#endif
if ((pid = vfork()) == -1) {
syslog(LOG_ERR, "xfer vfork: %m");
#ifndef SYSV
+#if defined(POSIX_SIGNALS)
+ sigprocmask(SIG_UNBLOCK,&sset,NULL);
+#else
(void) sigsetmask(omask);
#endif
+#endif
zp->z_time = tt.tv_sec + 10;
return;
}
@@ -466,8 +479,12 @@ startxfer(zp)
xfers_running++;
zp->z_time = tt.tv_sec + MAX_XFER_TIME;
#ifndef SYSV
+#if defined(POSIX_SIGNALS)
+ sigprocmask(SIG_UNBLOCK,&sset,NULL);
+#else
(void) sigsetmask(omask);
#endif
+#endif
}
const char *
OpenPOWER on IntegriCloud