From e465dbe2a9e789b1ddf06510c8fe4d568634c2ee Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Wed, 25 Dec 2019 13:22:33 -0500 Subject: Handle SIGINT and SIGTERM --- litterbox.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/litterbox.c b/litterbox.c index 5c18021..181227a 100644 --- a/litterbox.c +++ b/litterbox.c @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -438,6 +439,14 @@ static void handle(struct Message msg) { } } +static void quit(int sig) { + (void)sig; + format("QUIT\r\n"); + tls_close(client); + dbClose(); + _exit(EX_OK); +} + int main(int argc, char *argv[]) { char *path = NULL; bool init = false; @@ -520,13 +529,16 @@ int main(int argc, char *argv[]) { format("CAP REQ :server-time\r\n"); format("NICK :%s\r\nUSER %s 0 * :Litterbox\r\n", nick, user); + signal(SIGINT, quit); + signal(SIGTERM, quit); + char buf[8191 + 512]; size_t len = 0; for (;;) { ssize_t ret = tls_read(client, &buf[len], sizeof(buf) - len); if (ret == TLS_WANT_POLLIN || ret == TLS_WANT_POLLOUT) continue; if (ret < 0) errx(EX_IOERR, "tls_read: %s", tls_error(client)); - if (!ret) break; + if (!ret) errx(EX_PROTOCOL, "server closed connection"); len += ret; char *line = buf; @@ -540,6 +552,4 @@ int main(int argc, char *argv[]) { len -= line - buf; memmove(buf, line, len); } - - dbClose(); } -- cgit 1.4.1 cgit-pink/diff/README?h=1.3.0&id=a3daa41b78fc2c528c9a42630ab95451ddb87358&follow=1'>diff
Commit message (Expand)Author
2015-08-14stats: move layout into page functionJohn Keeping
2015-08-14refs: move layout to page functionJohn Keeping
2015-08-14log: move layout into page functionJohn Keeping
2015-08-14diff: move layout to page functionJohn Keeping
2015-08-14commit: move layout into page functionJohn Keeping
2015-08-14about: move layout into page functionsJohn Keeping
2015-08-14ui-shared: add cgit_print_layout_{start,end}()John Keeping
2015-08-14html: remove html_status()John Keeping
2015-08-14snapshot: don't reimplement cgit_print_error_page()John Keeping
2015-08-14snapshot: use cgit_print_error_page() for HTTP status codesJohn Keeping
2015-08-14patch: use cgit_print_error_page() for HTTP status codesJohn Keeping
2015-08-14blob: use cgit_print_error_page() to add HTTP headersJohn Keeping
2015-08-14snapshot: use cgit_print_error_page() instead of html_status()John Keeping
2015-08-14plain: use cgit_print_error_page() instead of html_status()John Keeping
2015-08-14clone: use cgit_print_error_page() instead of html_status()John Keeping
2015-08-14cgit: use cgit_print_error_page() where appropriateJohn Keeping
2015-08-14ui-shared: add cgit_print_error_page() functionJohn Keeping
2015-08-14ui-patch: make sure to send http headersChristian Hesse
2015-08-13Makefile: make "git/config.mak.uname" inclusion optionalJohn Keeping
2015-08-13ui-shared: show full date in tooltip if longer ago than max_relativeJohn Keeping
2015-08-13ui-shared: use common function in print_rel_date()John Keeping
2015-08-13ui-shared: extract date formatting to a functionJohn Keeping
2015-08-13filter: don't use dlsym unnecessarilyJohn Keeping
2015-08-13ui-tree: use "sane" isgraph()John Keeping
2015-08-13cgit.h: move stdbool.h from ui-shared.hJohn Keeping
2015-08-13cache.c: fix header orderJohn Keeping
2015-08-13configfile.c: don't include system headers directlyJohn Keeping
2015-08-13Remove redundant includesJohn Keeping
2015-08-13Makefile: include Git's config.mak.unameJohn Keeping
2015-08-13tests: allow shell to be overriddenJohn Keeping
2015-08-13redirect: cleanlinessJason A. Donenfeld
2015-08-13redirect: be more careful for different cgi setupsJason A. Donenfeld
2015-08-12ui-log: fix double countingJohn Keeping
2015-08-12log: allow users to follow a fileJohn Keeping
2015-08-12shared: make cgit_diff_tree_cb publicJohn Keeping
2015-08-12t0110: Chain together using &&Jason A. Donenfeld
2015-08-12about: always ensure page has a trailing slashJason A. Donenfeld
2015-08-12filters: apply HTML escapingLazaros Koromilas
2015-08-12git: update to v2.5.0Christian Hesse
2015-08-12Fix processing of repo.hide and repo.ignoreDaniel Reichelt