chiark / gitweb /
uslip/uslip.c: Be more reliable about tidying up.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 5 Sep 2017 09:34:05 +0000 (10:34 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 14 Jun 2018 09:34:25 +0000 (10:34 +0100)
Trap `SIGHUP' because shells sometimes send it to us during testing; and
don't give up on select(2) because of `EINTR'.

uslip/uslip.c

index 66cc0797672ae560450e1503ecd3e3b0442f02be..629da12328ffe2435593f1f0cffa488370596223 100644 (file)
@@ -605,6 +605,7 @@ static void slipif(void)
 
   sig_init(&sel);
   sig_add(&term, SIGTERM, slip_term, &fd);
+  sig_add(&term, SIGHUP, slip_term, &fd);
   sig_add(&term, SIGINT, slip_term, &fd);
 
   initqueue(&q_in);
@@ -620,7 +621,7 @@ static void slipif(void)
   /* --- Main loop --- */
 
   while (reasons) {
-    if (sel_select(&sel))
+    if (sel_select(&sel) && errno != EINTR)
       die(EXIT_FAILURE, "select: %s", strerror(errno));
   }