npm

Nihal's Password Manager (WIP)
git clone git://git.nihaljere.xyz/npm
Log | Files | Refs

commit 0757a87ed3245ebeef52e30efa44582327f2df43
parent b3869b9bba64e94a630c22acceaf582ca5b4c7f3
Author: Nihal Jere <nihal@nihaljere.xyz>
Date:   Sat, 28 Aug 2021 14:55:06 -0500

npm-agent: remove socket on exit

Diffstat:
Mnpm-agent.c | 19+++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/npm-agent.c b/npm-agent.c @@ -211,10 +211,12 @@ agent() run_core(); } +bool running = true; + void -remove_socket(void) +handler(int sig) { - unlink(SOCKPATH); + running = false; } int @@ -226,6 +228,13 @@ main(int argc, char *argv[]) }; int ret; + struct sigaction sa = { + .sa_handler = handler, + }; + + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + int sock = socket(AF_UNIX, SOCK_STREAM, 0); if (sock == -1) { fprintf(stderr, "failed to create socket: %s\n", strerror(errno)); @@ -237,9 +246,6 @@ main(int argc, char *argv[]) goto error; } - if (atexit(&remove_socket) != 0) - goto error; - if (listen(sock, 50) == -1) { fprintf(stderr, "failed to set socket to listening: %s\n", strerror(errno)); goto error; @@ -257,7 +263,7 @@ main(int argc, char *argv[]) fds[TIMER].events = POLLIN; fds[CLIENT].fd = -1; - while (1) { + while (running) { if (poll(fds, sizeof(fds) / sizeof(fds[0]), -1) == -1) { fprintf(stderr, "poll failed: %s", strerror(errno)); goto error; @@ -315,5 +321,6 @@ main(int argc, char *argv[]) error: close(sock); error_socket: + unlink(SOCKPATH); return 1; }