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 -
|
||||
===============================
|
||||
Fix some libdaemon socket creation and reuse error paths.
|
||||
Daemons (libdaemon) support exit on idle also in non-systemd environment.
|
||||
Provide make dist and make rpm targets
|
||||
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. */
|
||||
if (stat(sockaddr.sun_path, &buf)) {
|
||||
if (lstat(sockaddr.sun_path, &buf)) {
|
||||
perror("stat failed");
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (S_ISSOCK(buf.st_mode)) {
|
||||
if (!S_ISSOCK(buf.st_mode)) {
|
||||
fprintf(stderr, "%s: not a socket\n", sockaddr.sun_path);
|
||||
goto error;
|
||||
}
|
||||
@ -595,7 +595,7 @@ void daemon_start(daemon_state s)
|
||||
}
|
||||
|
||||
/* 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));
|
||||
|
||||
/* Signal parent, letting them know we are ready to go. */
|
||||
|
Loading…
Reference in New Issue
Block a user