~mdw
/
tripe
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
uslip/uslip.c: Shut the server down on `SIGTERM'.
[tripe]
/
uslip
/
uslip.c
diff --git
a/uslip/uslip.c
b/uslip/uslip.c
index
853df5b
..
0ed9e70
100644
(file)
--- a/
uslip/uslip.c
+++ b/
uslip/uslip.c
@@
-55,6
+55,7
@@
#include <mLib/quis.h>
#include <mLib/report.h>
#include <mLib/sel.h>
#include <mLib/quis.h>
#include <mLib/report.h>
#include <mLib/sel.h>
+#include <mLib/sig.h>
#include <mLib/sub.h>
#include <mLib/tv.h>
#include <mLib/sub.h>
#include <mLib/tv.h>
@@
-570,11
+571,15
@@
static void do_slip_in(int fd, unsigned mode, void *hunoz)
}
}
}
}
+static void slip_term(int n, void *fdp)
+ { close_slip(*(int *)fdp); }
+
static void slipif(void)
{
int fd;
dstr d = DSTR_INIT;
struct sockaddr_un sun;
static void slipif(void)
{
int fd;
dstr d = DSTR_INIT;
struct sockaddr_un sun;
+ sig term;
size_t sz;
/* --- Make the socket --- */
size_t sz;
/* --- Make the socket --- */
@@
-599,6
+604,10
@@
static void slipif(void)
dribble_out = make_dribbler(STDOUT_FILENO, done_slip_dribble, 0);
sel_addfile(&slip_in);
dribble_out = make_dribbler(STDOUT_FILENO, done_slip_dribble, 0);
sel_addfile(&slip_in);
+ sig_init(&sel);
+ sig_add(&term, SIGTERM, slip_term, &fd);
+ sig_add(&term, SIGINT, slip_term, &fd);
+
initqueue(&q_in);
reasons++;
initqueue(&q_in);
reasons++;