This commit is contained in:
rustdesk committed 2026-07-25 11:42:45 +08:00
1 parent 538aef71d1
commit af7d7f0b02
3 files changed
+114 -2

No files matched your search

+20
View File
@@ -95,6 +95,7 @@ enum LoopFailure {
Listener3,
Listener2,
Listener,
ConsoleListener,
}
impl RendezvousServer {
@@ -157,6 +158,7 @@ impl RendezvousServer {
let mut listener = create_tcp_listener(bind_addr, port).await?;
let mut listener2 = create_tcp_listener(bind_addr, nat_port).await?;
let mut listener3 = create_tcp_listener(bind_addr, ws_port).await?;
let mut listener_console = listen_console(bind_addr, nat_port as _).await?;
log::info!("Listening on tcp/udp {}", listener.local_addr()?);
log::info!(
"Listening on tcp {}, extra port for NAT test",
@@ -206,6 +208,7 @@ impl RendezvousServer {
&mut listener,
&mut listener2,
&mut listener3,
&mut listener_console,
&mut socket,
&key,
)
@@ -223,6 +226,10 @@ impl RendezvousServer {
drop(listener2);
listener2 = create_tcp_listener(bind_addr, nat_port).await?;
}
LoopFailure::ConsoleListener => {
drop(listener_console.take());
listener_console = listen_console(bind_addr, nat_port as _).await?;
}
LoopFailure::Listener3 => {
drop(listener3);
listener3 = create_tcp_listener(bind_addr, ws_port).await?;
@@ -243,6 +250,7 @@ impl RendezvousServer {
listener: &mut TcpListener,
listener2: &mut TcpListener,
listener3: &mut TcpListener,
listener_console: &mut Option<TcpListener>,
socket: &mut FramedSocket,
key: &str,
) -> LoopFailure {
@@ -294,6 +302,18 @@ impl RendezvousServer {
}
}
}
res = accept_or_pending(listener_console.as_ref()) => {
match res {
Ok((stream, addr)) => {
stream.set_nodelay(true).ok();
self.handle_listener2(stream, addr).await;
}
Err(err) => {
log::error!("console listener.accept failed: {}", err);
return LoopFailure::ConsoleListener;
}
}
}
res = listener3.accept() => {
match res {
Ok((stream, addr)) => {