diff --git a/src/main.rs b/src/main.rs index f5691eb..e04b069 100644 --- a/src/main.rs +++ b/src/main.rs @@ -284,7 +284,17 @@ async fn tcp_acceptor(globals: Arc, tcp_listener: TcpListener) -> Resul let timeout = globals.tcp_timeout; let concurrent_connections = globals.tcp_concurrent_connections.clone(); let active_connections = globals.tcp_active_connections.clone(); - while let Ok((mut client_connection, _client_addr)) = tcp_listener.accept().await { + loop { + let (mut client_connection, _client_addr) = match tcp_listener.accept().await { + Ok(x) => x, + Err(e) => { + if e.kind() == std::io::ErrorKind::WouldBlock { + continue; + } + warn!("TCP accept error: {}", e); + continue; + } + }; let (tx, rx) = oneshot::channel::<()>(); let tx_channel_index = { let mut active_connections = active_connections.lock(); @@ -333,7 +343,6 @@ async fn tcp_acceptor(globals: Arc, tcp_listener: TcpListener) -> Resul _ = active_connections.remove(tx_channel_index); })); } - Ok(()) } #[allow(unreachable_code)]