mirror of
https://github.com/systemd/systemd.git
synced 2025-03-10 16:58:28 +03:00
userdbd: reverse which path is a socket and which a symlink
userdbd listens on "two" sockets, that are actually the same: one is a real AF_UNIX socket in the fs, and the other is a symlink to it. So far, when userdbd was started from the command line it would make one a symlink and the other a real socket, but when invoked via unit files they'd be swapped, i.e. the other would be a symlink and the one a real socket. Let's bring this in line. Since the "io.systemd.Multiplexer" is our main interface, let's make it the one exposed as socket, and then make "io.systemd.NameServiceSwitch" a symlink to it. Or in other words, let's adjust the C code to match the unit file.
This commit is contained in:
parent
2708160ccd
commit
bbfb8c878c
@ -267,7 +267,7 @@ int manager_startup(Manager *m) {
|
||||
else {
|
||||
union sockaddr_union sockaddr = {
|
||||
.un.sun_family = AF_UNIX,
|
||||
.un.sun_path = "/run/systemd/userdb/io.systemd.NameServiceSwitch",
|
||||
.un.sun_path = "/run/systemd/userdb/io.systemd.Multiplexer",
|
||||
};
|
||||
|
||||
r = mkdir_p("/run/systemd/userdb", 0755);
|
||||
@ -284,7 +284,8 @@ int manager_startup(Manager *m) {
|
||||
if (bind(m->listen_fd, &sockaddr.sa, SOCKADDR_UN_LEN(sockaddr.un)) < 0)
|
||||
return log_error_errno(errno, "Failed to bind socket: %m");
|
||||
|
||||
r = symlink_idempotent("io.systemd.NameServiceSwitch", "/run/systemd/userdb/io.systemd.Multiplexer", false);
|
||||
r = symlink_idempotent("io.systemd.Multiplexer",
|
||||
"/run/systemd/userdb/io.systemd.NameServiceSwitch", false);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to bind io.systemd.Multiplexer: %m");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user