ihandle SIGINT and SIGTERM: cleanup on these signals - teed - A multiplex relay tee(1) daemon. Err bitreich.org 70 hgit clone git://bitreich.org/teed git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/teed URL:git://bitreich.org/teed git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/teed bitreich.org 70 1Log /scm/teed/log.gph bitreich.org 70 1Files /scm/teed/files.gph bitreich.org 70 1Refs /scm/teed/refs.gph bitreich.org 70 1Tags /scm/teed/tag bitreich.org 70 1README /scm/teed/file/README.md.gph bitreich.org 70 1LICENSE /scm/teed/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 7ea6a417f78562629bd6f579dd593d44a5372acb /scm/teed/commit/7ea6a417f78562629bd6f579dd593d44a5372acb.gph bitreich.org 70 1parent c9671740957f58aa168262f3e76ad2f72542f05b /scm/teed/commit/c9671740957f58aa168262f3e76ad2f72542f05b.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Mon, 14 Aug 2023 15:09:01 +0200 Err bitreich.org 70 i Err bitreich.org 70 ihandle SIGINT and SIGTERM: cleanup on these signals Err bitreich.org 70 i Err bitreich.org 70 iSigned-off-by: Christoph Lohmann <20h@r-36.net> Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M teed.c | 17 ++++++++++++++++- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 16 insertions(+), 1 deletion(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/teed.c b/teed.c /scm/teed/file/teed.c.gph bitreich.org 70 i@@ -14,6 +14,8 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i Err bitreich.org 70 i+volatile sig_atomic_t isrunning = 1; Err bitreich.org 70 i+ Err bitreich.org 70 i void * Err bitreich.org 70 i memdup(void *p, int l) Err bitreich.org 70 i { Err bitreich.org 70 i@@ -144,9 +146,22 @@ llist_del(llist **l, llist *e) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i+sighandler(int signo) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ switch (signo) { Err bitreich.org 70 i+ case SIGINT: Err bitreich.org 70 i+ case SIGTERM: Err bitreich.org 70 i+ isrunning = 0; Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i initsignals(void) Err bitreich.org 70 i { Err bitreich.org 70 i signal(SIGPIPE, SIG_IGN); Err bitreich.org 70 i+ signal(SIGINT, sighandler); Err bitreich.org 70 i+ signal(SIGTERM, sighandler); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i@@ -215,7 +230,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i Err bitreich.org 70 i timeout.tv_sec = 1; Err bitreich.org 70 i timeout.tv_nsec = 0; Err bitreich.org 70 i- for (;;) { Err bitreich.org 70 i+ for (;isrunning;) { Err bitreich.org 70 i maxsfd = 0; Err bitreich.org 70 i FD_ZERO(&fdset); Err bitreich.org 70 i forllist(lfds, e) { Err bitreich.org 70 .