From cd0b2c3e6d6fee6ea9919821b24dc03f8b1d07b9 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Mon, 19 Aug 2024 00:13:22 +0200 Subject: [PATCH] sd_notify(ready) --- src/server/command.rs | 4 +++- src/server/server_loop.rs | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/server/command.rs b/src/server/command.rs index cc10d4d..3ad7dbe 100644 --- a/src/server/command.rs +++ b/src/server/command.rs @@ -50,10 +50,12 @@ async fn socket_activate(config: ServerConfig) -> anyhow::Result<()> { // TODO: allow getting socket path from other socket activation sources let conn = get_socket_from_systemd().await?; let uid = conn.peer_cred()?.uid(); - let unix_user = UnixUser::from_uid(uid.into())?; + let unix_user = UnixUser::from_uid(uid)?; log::info!("Accepted connection from {}", unix_user.username); + sd_notify::notify(true, &[sd_notify::NotifyState::Ready]).ok(); + handle_requests_for_single_session(conn, &unix_user, &config).await?; Ok(()) diff --git a/src/server/server_loop.rs b/src/server/server_loop.rs index 94e0b1c..03d9b4d 100644 --- a/src/server/server_loop.rs +++ b/src/server/server_loop.rs @@ -57,11 +57,13 @@ pub async fn listen_for_incoming_connections( let listener = UnixListener::bind(socket_path)?; + sd_notify::notify(true, &[sd_notify::NotifyState::Ready]).ok(); + while let Ok((mut conn, _addr)) = listener.accept().await { let uid = conn.peer_cred()?.uid(); log::trace!("Accepted connection from uid {}", uid); - let unix_user = match UnixUser::from_uid(uid.into()) { + let unix_user = match UnixUser::from_uid(uid) { Ok(user) => user, Err(e) => { eprintln!("Failed to get UnixUser from uid: {}", e);