mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
libdaemon: Fix socket reuse error paths.
Invert S_ISSOCK validation. Fail instead of replacing a symlink with a new socket. After failure, skip calling fcntl with invalid socket_fd.
This commit is contained in:
parent
cc560b75aa
commit
02e10f4ccd
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.120 -
|
Version 2.02.120 -
|
||||||
===============================
|
===============================
|
||||||
|
Fix some libdaemon socket creation and reuse error paths.
|
||||||
Daemons (libdaemon) support exit on idle also in non-systemd environment.
|
Daemons (libdaemon) support exit on idle also in non-systemd environment.
|
||||||
Provide make dist and make rpm targets
|
Provide make dist and make rpm targets
|
||||||
Configure lvm.conf for use_lvmetad and use_lvmpolld.
|
Configure lvm.conf for use_lvmetad and use_lvmpolld.
|
||||||
|
@ -261,12 +261,12 @@ static int _open_socket(daemon_state s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Socket already exists. If it's stale, remove it. */
|
/* Socket already exists. If it's stale, remove it. */
|
||||||
if (stat(sockaddr.sun_path, &buf)) {
|
if (lstat(sockaddr.sun_path, &buf)) {
|
||||||
perror("stat failed");
|
perror("stat failed");
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (S_ISSOCK(buf.st_mode)) {
|
if (!S_ISSOCK(buf.st_mode)) {
|
||||||
fprintf(stderr, "%s: not a socket\n", sockaddr.sun_path);
|
fprintf(stderr, "%s: not a socket\n", sockaddr.sun_path);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@ -595,7 +595,7 @@ void daemon_start(daemon_state s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Set Close-on-exec */
|
/* Set Close-on-exec */
|
||||||
if (fcntl(s.socket_fd, F_SETFD, 1))
|
if (!failed && fcntl(s.socket_fd, F_SETFD, 1))
|
||||||
fprintf(stderr, "setting CLOEXEC on socket fd %d failed: %s\n", s.socket_fd, strerror(errno));
|
fprintf(stderr, "setting CLOEXEC on socket fd %d failed: %s\n", s.socket_fd, strerror(errno));
|
||||||
|
|
||||||
/* Signal parent, letting them know we are ready to go. */
|
/* Signal parent, letting them know we are ready to go. */
|
||||||
|
Loading…
Reference in New Issue
Block a user