diff options
Diffstat (limited to 'usr.sbin/named/ns_maint.c')
-rw-r--r-- | usr.sbin/named/ns_maint.c | 19 |
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 * |