]> git.ozlabs.org Git - ppp.git/blobdiff - pppd/main.c
fix random signals blocking in handle_events()
[ppp.git] / pppd / main.c
index 1f6000b8b3eedb6a0c21a16ca73bb4b0f926bf2f..dddcfe44db7b4e7c02e66dba5f4bd3af38769301 100644 (file)
@@ -40,7 +40,7 @@
  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#define RCSID  "$Id: main.c,v 1.133 2004/02/02 03:40:12 paulus Exp $"
+#define RCSID  "$Id: main.c,v 1.135 2004/04/12 05:02:00 kad Exp $"
 
 #include <stdio.h>
 #include <ctype.h>
@@ -650,6 +650,13 @@ handle_events()
     struct timeval timo;
     sigset_t mask;
 
+    sigemptyset(&mask);
+    sigaddset(&mask, SIGHUP);
+    sigaddset(&mask, SIGINT);
+    sigaddset(&mask, SIGTERM);
+    sigaddset(&mask, SIGCHLD);
+    sigaddset(&mask, SIGUSR2);
+
     kill_link = open_ccp_flag = 0;
     if (sigsetjmp(sigjmp, 1) == 0) {
        sigprocmask(SIG_BLOCK, &mask, NULL);
@@ -1338,6 +1345,9 @@ kill_my_pg(sig)
 {
     struct sigaction act, oldact;
 
+    sigemptyset(&act.sa_mask);
+    sigaddset(&act.sa_mask, sig);
+
     act.sa_handler = SIG_IGN;
     act.sa_flags = 0;
     kill(0, sig);