Don't leak fds, and don't unset cloexec except/until needed (#3)

This may still leak fds in some error cases. That can be solved by using
`OwnedFd` when the next Rust stable releases.
This commit is contained in:
Ian Douglas Scott 2022-07-20 08:05:01 -07:00 committed by GitHub
parent b614753cff
commit cefd13692b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 52 additions and 32 deletions

View file

@ -55,21 +55,25 @@ async fn main() -> Result<()> {
let mut sockets = Vec::with_capacity(2);
let (env, fd) = comp::create_privileged_socket(&mut sockets, &env_vars)
.wrap_err("failed to create panel socket")?;
generic::run_executable(
token.child_token(),
info_span!(parent: None, "cosmic-panel"),
"cosmic-panel",
vec!["testing-panel".into()],
comp::create_privileged_socket(&mut sockets, &env_vars)
.wrap_err("failed to create panel socket")?,
env,
vec![fd],
);
let (env, fd) = comp::create_privileged_socket(&mut sockets, &env_vars)
.wrap_err("failed to create dock socket")?;
generic::run_executable(
token.child_token(),
info_span!(parent: None, "cosmic-panel dock"),
"cosmic-panel",
vec!["testing-dock".into()],
comp::create_privileged_socket(&mut sockets, &env_vars)
.wrap_err("failed to create dock socket")?,
env,
vec![fd],
);
socket_tx.send(sockets).unwrap();