expose create_tcp_listener function. do not enable reuse_addr on windows

This commit is contained in:
fakeshadow 2021-01-22 15:20:56 -08:00
parent 6112a47529
commit a431bce90f
2 changed files with 8 additions and 3 deletions

View File

@ -472,13 +472,18 @@ pub(super) fn bind_addr<S: ToSocketAddrs>(
}
}
fn create_tcp_listener(addr: StdSocketAddr, backlog: u32) -> io::Result<MioTcpListener> {
pub fn create_tcp_listener(addr: StdSocketAddr, backlog: u32) -> io::Result<MioTcpListener> {
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)
}

View File

@ -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;