diff --git a/src/libeis-socket.c b/src/libeis-socket.c index 888c955..5ce918b 100644 --- a/src/libeis-socket.c +++ b/src/libeis-socket.c @@ -147,11 +147,15 @@ eis_setup_backend_socket(struct eis *eis, const char *socketpath) * socket file. */ _cleanup_free_ char *lockfile = xaprintf("%s.lock", path); _cleanup_close_ int lockfd = - open(lockfile, O_CREAT | O_CLOEXEC | O_RDWR, S_IRUSR | S_IWUSR); - int rc = flock(lockfd, LOCK_EX | LOCK_NB); + xerrno(open(lockfile, O_CREAT | O_CLOEXEC | O_RDWR, S_IRUSR | S_IWUSR)); + int rc; + if (lockfd >= 0) + rc = xerrno(flock(lockfd, LOCK_EX | LOCK_NB)); + else + rc = lockfd; if (rc < 0) { log_error(eis, "Failed to create lockfile %s, is another EIS running?", lockfile); - return -errno; + return -rc; } struct stat st;