block SIGPOLL to fix hanging on startup bug.
[ppp.git] / pppd / main.c
index 30596d160b47b8773700143f2c5d19670d32a20e..3172485a23e77d025cfc9c18cdf972a44c3d4910 100644 (file)
@@ -18,7 +18,7 @@
  */
 
 #ifndef lint
-static char rcsid[] = "$Id: main.c,v 1.3 1993/12/14 05:16:01 paulus Exp $";
+static char rcsid[] = "$Id: main.c,v 1.5 1994/01/10 00:18:59 paulus Exp $";
 #endif
 
 #define SETSID
@@ -264,8 +264,6 @@ main(argc, argv)
            syslog(LOG_ERR, "getpgrp(0): %m");
            die(1);
        }
-       if (pgrpid != pid) 
-           syslog(LOG_WARNING, "warning... not a process group leader");
 
     } else {
        /*
@@ -341,7 +339,16 @@ main(argc, argv)
 
     signal(SIGUSR1, incdebug);         /* Increment debug flag */
     signal(SIGUSR2, nodebug);          /* Reset debug flag */
-  
+
+    /*
+     * Block SIGIOs and SIGPOLLs for now
+     */
+    sigemptyset(&mask);
+    sigaddset(&mask, SIGIO);
+#ifdef STREAMS
+    sigaddset(&mask, SIGPOLL);
+#endif
+    sigprocmask(SIG_BLOCK, &mask, NULL);
 
     /*
      * Open the serial device and set it up to be the ppp interface.
@@ -399,14 +406,14 @@ main(argc, argv)
     }
 
     /*
-     * Set process group of device to our process group so we can get SIGIOs.
+     * Set process group of device to our process group so we can get
+     * SIGIOs and SIGHUPs.
      */
 #ifdef SETSID
     if (default_device) {
        int id = tcgetpgrp(fd);
        if (id != pgrpid) {
-           syslog(LOG_WARNING,
-                  "warning: not foreground process group leader");
+           syslog(LOG_WARNING, "warning: not in tty's process group");
        }
     } else {
        if (tcsetpgrp(fd, pgrpid) < 0) {