From 2f7ecee18a8dc4fb4f8bd52f74ac1b84d6b19001 Mon Sep 17 00:00:00 2001 From: Ofer Chen Date: Wed, 27 May 2026 08:50:01 +0300 Subject: [PATCH 1/5] feat: add DaemonStream abstraction for plain TCP and TLS connections Introduce DaemonStream enum that wraps either a plain TcpStream or a rustls TLS connection behind a unified Read + Write interface. All daemon call sites now accept DaemonStream instead of raw TcpStream, enabling transparent TLS upgrades when the daemon-tls feature is active. The TLS variant is gated behind #[cfg(feature = "daemon-tls")] so default builds pay zero cost. Includes wrap_accepted_stream() helper that performs TLS handshake or wraps as Plain based on TlsAcceptor availability. --- crates/daemon/src/daemon.rs | 2 +- crates/daemon/src/daemon/sections/greeting.rs | 2 +- .../src/daemon/sections/legacy_messages.rs | 6 +- .../daemon/sections/module_access/listing.rs | 2 +- .../daemon/sections/module_access/request.rs | 4 +- .../src/daemon/sections/proxy_protocol.rs | 5 +- .../sections/server_runtime/accept_loop.rs | 2 + .../sections/server_runtime/connection.rs | 57 +++- .../sections/server_runtime/listener.rs | 2 +- .../src/daemon/sections/session_runtime.rs | 13 +- crates/daemon/src/daemon_stream.rs | 288 ++++++++++++++++++ crates/daemon/src/lib.rs | 3 + 12 files changed, 361 insertions(+), 25 deletions(-) create mode 100644 crates/daemon/src/daemon_stream.rs diff --git a/crates/daemon/src/daemon.rs b/crates/daemon/src/daemon.rs index 4677f80d0..eb0a3be44 100644 --- a/crates/daemon/src/daemon.rs +++ b/crates/daemon/src/daemon.rs @@ -61,7 +61,7 @@ use protocol::{ parse_legacy_daemon_message, }; -use crate::{config::DaemonConfig, error::DaemonError, systemd}; +use crate::{config::DaemonConfig, daemon_stream::DaemonStream, error::DaemonError, systemd}; mod help; pub(crate) mod tracing_stream; diff --git a/crates/daemon/src/daemon/sections/greeting.rs b/crates/daemon/src/daemon/sections/greeting.rs index 745bd152d..39b995387 100644 --- a/crates/daemon/src/daemon/sections/greeting.rs +++ b/crates/daemon/src/daemon/sections/greeting.rs @@ -78,7 +78,7 @@ pub(crate) fn read_trimmed_line(reader: &mut R) -> io::Result