mirror of
https://github.com/OMGeeky/tarpc.git
synced 2025-12-29 07:40:14 +01:00
@@ -822,6 +822,17 @@ mod functional_test {
|
||||
bad => panic!(r#"Expected Error::ServerDeserialize but got "{}""#, bad),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn reuse_addr() {
|
||||
let _ = env_logger::init();
|
||||
let addr = Server.listen("localhost:0".first_socket_addr(), server::Options::default())
|
||||
.wait()
|
||||
.unwrap();
|
||||
Server.listen(addr, server::Options::default())
|
||||
.wait()
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
pub mod error_service {
|
||||
|
||||
@@ -102,14 +102,20 @@ fn listen_with<S, Req, Resp, E>(new_service: S,
|
||||
|
||||
fn listener(addr: &SocketAddr, handle: &Handle) -> io::Result<TcpListener> {
|
||||
const PENDING_CONNECTION_BACKLOG: i32 = 1024;
|
||||
#[cfg(unix)]
|
||||
use net2::unix::UnixTcpBuilderExt;
|
||||
|
||||
match *addr {
|
||||
SocketAddr::V4(_) => net2::TcpBuilder::new_v4(),
|
||||
SocketAddr::V6(_) => net2::TcpBuilder::new_v6(),
|
||||
}
|
||||
?
|
||||
.reuse_address(true)?
|
||||
.bind(addr)?
|
||||
let builder = match *addr {
|
||||
SocketAddr::V4(_) => net2::TcpBuilder::new_v4(),
|
||||
SocketAddr::V6(_) => net2::TcpBuilder::new_v6(),
|
||||
}?;
|
||||
|
||||
builder.reuse_address(true)?;
|
||||
|
||||
#[cfg(unix)]
|
||||
builder.reuse_port(true)?;
|
||||
|
||||
builder.bind(addr)?
|
||||
.listen(PENDING_CONNECTION_BACKLOG)
|
||||
.and_then(|l| TcpListener::from_listener(l, addr, handle))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user