diff options
Diffstat (limited to 'ext/net/ops.rs')
-rw-r--r-- | ext/net/ops.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/ext/net/ops.rs b/ext/net/ops.rs index 9a6d95586..e6420bf9e 100644 --- a/ext/net/ops.rs +++ b/ext/net/ops.rs @@ -246,10 +246,14 @@ impl Resource for UdpSocketResource { fn op_net_listen_tcp<NP>( state: &mut OpState, addr: IpAddr, + reuse_port: bool, ) -> Result<(ResourceId, IpAddr), AnyError> where NP: NetPermissions + 'static, { + if reuse_port { + super::check_unstable(state, "Deno.listen({ reusePort: true })"); + } state .borrow_mut::<NP>() .check_net(&(&addr.hostname, Some(addr.port)), "Deno.listen()")?; @@ -264,6 +268,10 @@ where let socket = Socket::new(domain, Type::STREAM, None)?; #[cfg(not(windows))] socket.set_reuse_address(true)?; + if reuse_port { + #[cfg(target_os = "linux")] + socket.set_reuse_port(true)?; + } let socket_addr = socket2::SockAddr::from(addr); socket.bind(&socket_addr)?; socket.listen(128)?; |