TAKE_FD(fd);
vl = sd_varlink_ref(vl);
- r = sd_varlink_set_allow_fd_passing_input(vl, true);
- if (r < 0)
- return log_error_errno(r, "Failed to enable fd passing for read: %m");
-
- r = sd_varlink_set_allow_fd_passing_output(vl, true);
- if (r < 0)
- return log_error_errno(r, "Failed to enable fd passing for write: %m");
-
r = sd_event_loop(event);
if (r < 0)
return log_error_errno(r, "Failed to run event loop: %m");
if (r < 0)
return log_error_errno(r, "Failed to turn off non-blocking mode for listening socket: %m");
- r = varlink_server_new(&server, SD_VARLINK_SERVER_INHERIT_USERDATA, NULL);
+ r = varlink_server_new(&server,
+ SD_VARLINK_SERVER_INHERIT_USERDATA|
+ SD_VARLINK_SERVER_ALLOW_FD_PASSING_INPUT|SD_VARLINK_SERVER_ALLOW_FD_PASSING_OUTPUT,
+ NULL);
if (r < 0)
return log_error_errno(r, "Failed to allocate server: %m");
return sd_varlink_reply(vlink, NULL);
}
-static int on_connect(sd_varlink_server *s, sd_varlink *vlink, void *userdata) {
- int r;
-
- assert(vlink);
-
- r = sd_varlink_set_allow_fd_passing_input(vlink, true);
- if (r < 0)
- return log_warning_errno(r, "Failed to allow receiving file descriptor through varlink: %m");
-
- return 0;
-}
-
int manager_connect_varlink(Manager *m) {
_cleanup_(sd_varlink_server_unrefp) sd_varlink_server *s = NULL;
int r;
if (m->varlink_server)
return 0;
- r = varlink_server_new(&s, SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA, m);
+ r = varlink_server_new(
+ &s,
+ SD_VARLINK_SERVER_ACCOUNT_UID|SD_VARLINK_SERVER_INHERIT_USERDATA|
+ SD_VARLINK_SERVER_ALLOW_FD_PASSING_INPUT,
+ m);
if (r < 0)
return log_error_errno(r, "Failed to allocate varlink server object: %m");
if (r < 0)
return log_error_errno(r, "Failed to attach varlink connection to event loop: %m");
- r = sd_varlink_server_bind_connect(s, on_connect);
- if (r < 0)
- return log_error_errno(r, "Failed to set on-connect callback for varlink: %m");
-
m->varlink_server = TAKE_PTR(s);
return 0;
}
TAKE_FD(fd);
vl = sd_varlink_ref(vl);
- r = sd_varlink_set_allow_fd_passing_input(vl, true);
- if (r < 0)
- return log_error_errno(r, "Failed to enable fd passing for read: %m");
-
- r = sd_varlink_set_allow_fd_passing_output(vl, true);
- if (r < 0)
- return log_error_errno(r, "Failed to enable fd passing for write: %m");
-
for (;;) {
r = sd_varlink_process(vl);
if (r == -ENOTCONN) {
if (r < 0)
return log_error_errno(r, "Failed to turn off non-blocking mode for listening socket: %m");
- r = varlink_server_new(&server, SD_VARLINK_SERVER_INHERIT_USERDATA, NULL);
+ r = varlink_server_new(
+ &server,
+ SD_VARLINK_SERVER_INHERIT_USERDATA|
+ SD_VARLINK_SERVER_ALLOW_FD_PASSING_INPUT|SD_VARLINK_SERVER_ALLOW_FD_PASSING_OUTPUT,
+ NULL);
if (r < 0)
return log_error_errno(r, "Failed to allocate varlink server: %m");