diff options
Diffstat (limited to 'usr.sbin/ppp/timer.c')
-rw-r--r-- | usr.sbin/ppp/timer.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/usr.sbin/ppp/timer.c b/usr.sbin/ppp/timer.c index 1620e5f..3003b6c 100644 --- a/usr.sbin/ppp/timer.c +++ b/usr.sbin/ppp/timer.c @@ -63,11 +63,13 @@ tState2Nam(u_int state) void timer_Stop(struct pppTimer *tp) { - int omask; + sigset_t mask, omask; - omask = sigblock(sigmask(SIGALRM)); + sigemptyset(&mask); + sigaddset(&mask, SIGALRM); + sigprocmask(SIG_BLOCK, &mask, &omask); StopTimerNoBlock(tp); - sigsetmask(omask); + sigprocmask(SIG_SETMASK, &omask, NULL); } void @@ -76,16 +78,18 @@ timer_Start(struct pppTimer *tp) struct itimerval itimer; struct pppTimer *t, *pt; u_long ticks = 0; - int omask; + sigset_t mask, omask; - omask = sigblock(sigmask(SIGALRM)); + sigemptyset(&mask); + sigaddset(&mask, SIGALRM); + sigprocmask(SIG_BLOCK, &mask, &omask); if (tp->state != TIMER_STOPPED) StopTimerNoBlock(tp); if (tp->load == 0) { log_Printf(LogTIMER, "%s timer[%p] has 0 load!\n", tp->name, tp); - sigsetmask(omask); + sigprocmask(SIG_SETMASK, &omask, NULL); return; } @@ -121,7 +125,7 @@ timer_Start(struct pppTimer *tp) if (t) t->rest -= tp->rest; - sigsetmask(omask); + sigprocmask(SIG_SETMASK, &omask, NULL); } static void |