varlink: turn off O_NONBLOCK in exec: transport
If we invoke our own varlink implementation we'll turn on O_NONBLOCK right-away again, hence there is little point in turning it off, however, I generally think we probably should always path this fd as blocking, since that is the default after all, and invoked processes might want to use it like that. Or to see this differently: I think the varlink fd passed for activation in many ways is similar to and as fundamental as stdin/stderr/stdout, hence should probably be synchronous by default.
This commit is contained in:
@@ -450,6 +450,10 @@ int varlink_connect_exec(Varlink **ret, const char *_command, char **_argv) {
|
||||
if (socketpair(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0, pair) < 0)
|
||||
return log_debug_errno(errno, "Failed to allocate AF_UNIX socket pair: %m");
|
||||
|
||||
r = fd_nonblock(pair[1], false);
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to disable O_NONBLOCK for varlink socket: %m");
|
||||
|
||||
r = safe_fork_full(
|
||||
"(sd-vlexec)",
|
||||
/* stdio_fds= */ NULL,
|
||||
|
||||
Reference in New Issue
Block a user