commit 3373992ca5b7ea51900a4a821379235b20e308b8
parent 0fed1d5bd2ccec145f54a8a759e5866e8894bc78
Author: Quentin Rameau <quinq@fifth.space>
Date: Mon, 24 Jul 2017 00:38:17 +0200
Get rid of atexit()
This was a bad idea in a forking model where exit() is called from
children.
Diffstat:
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/quark.c b/quark.c
@@ -916,14 +916,17 @@ getusock(char *udsname, uid_t uid, gid_t gid)
}
if (listen(insock, SOMAXCONN) < 0) {
+ cleanup();
die("%s: listen: %s\n", argv0, strerror(errno));
}
if (chmod(udsname, sockmode) < 0) {
+ cleanup();
die("%s: chmod: %s\n", argv0, strerror(errno));
}
if (chown(udsname, uid, gid) < 0) {
+ cleanup();
die("%s: chown: %s\n", argv0, strerror(errno));
}
@@ -1002,7 +1005,6 @@ main(int argc, char *argv[])
usage();
}
- atexit(cleanup);
if (signal(SIGINT, sigcleanup) == SIG_ERR) {
fprintf(stderr, "%s: signal: Failed to handle SIGINT\n",
argv0);