From ec4d8a2a7517ebaeec0875b927731c7f0b546ad9 Mon Sep 17 00:00:00 2001 From: driftluo Date: Tue, 6 Sep 2022 10:36:39 +0800 Subject: [PATCH] fix: fix tcp reuse bind --- network/src/network.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/network/src/network.rs b/network/src/network.rs index e4ba1a131b4..632256680c5 100644 --- a/network/src/network.rs +++ b/network/src/network.rs @@ -954,6 +954,7 @@ impl NetworkService { } if let Some(addr) = multiaddr_to_socketaddr(addr) { use p2p::service::TcpSocket; + let domain = socket2::Domain::for_address(addr); service_builder = service_builder.tcp_config(move |socket: TcpSocket| { let socket_ref = socket2::SockRef::from(&socket); @@ -965,7 +966,9 @@ impl NetworkService { socket_ref.set_reuse_port(true)?; socket_ref.set_reuse_address(true)?; - socket_ref.bind(&addr.into())?; + if socket_ref.domain()? == domain { + socket_ref.bind(&addr.into())?; + } Ok(socket) }); init.transform(TransportType::Tcp)