commit ecb0d9e54ee87c488923372e5a0ccb7c052fbce1
parent d2223ba259cb5950b5bb4f7566823c5e780cffc5
Author: Quentin Rameau <quinq@fifth.space>
Date: Mon, 24 Jul 2017 17:43:35 +0200
Do not remove existing socket file
Check for its presence and bail out if found.
If the socket file is present, either a server is already bound to it,
or the last one errored out and we'd want to inspect this.
Also it could be an unrelated file given by error.
Diffstat:
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/quark.c b/quark.c
@@ -938,10 +938,8 @@ getusock(char *udsname, uid_t uid, gid_t gid)
}
memcpy(addr.sun_path, udsname, udsnamelen + 1);
- unlink(udsname);
-
if (bind(insock, (const struct sockaddr *)&addr, sizeof(addr)) < 0) {
- die("%s: bind: %s\n", argv0, strerror(errno));
+ die("%s: bind %s: %s\n", argv0, udsname, strerror(errno));
}
if (listen(insock, SOMAXCONN) < 0) {
@@ -1017,6 +1015,11 @@ main(int argc, char *argv[])
usage();
}
+ if (udsname && (!access(udsname, F_OK) || errno != ENOENT)) {
+ die("%s: socket file: %s\n",
+ argv0, errno ? strerror(errno) : "file exists");
+ }
+
/* compile and check the supplied vhost regexes */
if (vhosts) {
for (i = 0; i < LEN(vhost); i++) {