From a431bce90f897f6d58b7c231d3973bcf6d5d4616 Mon Sep 17 00:00:00 2001 From: fakeshadow <24548779@qq.com> Date: Fri, 22 Jan 2021 15:20:56 -0800 Subject: [PATCH] expose create_tcp_listener function. do not enable reuse_addr on windows --- actix-server/src/builder.rs | 9 +++++++-- actix-server/src/lib.rs | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/actix-server/src/builder.rs b/actix-server/src/builder.rs index 13c164f1..f10d8c9f 100644 --- a/actix-server/src/builder.rs +++ b/actix-server/src/builder.rs @@ -472,13 +472,18 @@ pub(super) fn bind_addr( } } -fn create_tcp_listener(addr: StdSocketAddr, backlog: u32) -> io::Result { +pub fn create_tcp_listener(addr: StdSocketAddr, backlog: u32) -> io::Result { let socket = match addr { StdSocketAddr::V4(_) => MioTcpSocket::new_v4()?, StdSocketAddr::V6(_) => MioTcpSocket::new_v6()?, }; - socket.set_reuseaddr(true)?; + // https://github.com/actix/actix-web/issues/1913 + #[cfg(not(windows))] + { + socket.set_reuseaddr(true)?; + } + socket.bind(addr)?; socket.listen(backlog) } diff --git a/actix-server/src/lib.rs b/actix-server/src/lib.rs index 24129b5a..46962d05 100644 --- a/actix-server/src/lib.rs +++ b/actix-server/src/lib.rs @@ -15,7 +15,7 @@ mod test_server; mod waker_queue; mod worker; -pub use self::builder::ServerBuilder; +pub use self::builder::{create_tcp_listener, ServerBuilder}; pub use self::config::{ServiceConfig, ServiceRuntime}; pub use self::server::Server; pub use self::service::ServiceFactory;