# HG changeset patch # User Paul Fisher # Date 1745041285 14400 # Node ID efc69e99db701220e00c226b458c17fb1bf9fdf1 # Parent cfef4593e20791c5a1c0cdccf13f0e1504966f44 Set socket to nonblocking before passing it to tokio. diff -r cfef4593e207 -r efc69e99db70 src/lib.rs --- a/src/lib.rs Sat Apr 19 01:33:50 2025 -0400 +++ b/src/lib.rs Sat Apr 19 01:41:25 2025 -0400 @@ -370,7 +370,7 @@ /// /// To be specific, it binds the socket or converts systemd socket to `tokio` 1.0 socket. /// - /// This method either `binds` the socket, if the address was provided or uses systemd socket + /// This method either `bind`s the socket, if the address was provided or uses systemd socket /// if the socket name was provided. #[cfg(feature = "tokio")] pub async fn bind_tokio(self) -> Result { @@ -391,19 +391,23 @@ } SocketAddrInner::Systemd(socket_name) => { let (socket, addr) = Self::get_systemd(socket_name, true)?; - socket - .try_into() + Self::wrap_tokio(socket) .map_err(|error| TokioConversionError { addr, error }.into()) } SocketAddrInner::SystemdNoPrefix(socket_name) => { let (socket, addr) = Self::get_systemd(socket_name, false)?; - socket - .try_into() + Self::wrap_tokio(socket) .map_err(|error| TokioConversionError { addr, error }.into()) } } } + #[cfg(feature = "tokio")] + fn wrap_tokio(socket: std::net::TcpListener) -> Result { + socket.set_nonblocking(true)?; + socket.try_into() + } + /// Creates `tokio::net::TcpListener` /// /// To be specific, it binds the socket or converts systemd socket to `tokio` 0.2 socket.