quark

quark web server
git clone git://git.suckless.org/quark
Log | Files | Refs | LICENSE

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:
quark.c | 4+++-
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);