From 0f3db29e75ceb74e4f9018f70dd0ab752e956e6b Mon Sep 17 00:00:00 2001 From: rustdesk Date: Thu, 29 Feb 2024 11:27:21 +0800 Subject: [PATCH] fix https://github.com/rustdesk/rustdesk/discussions/7045 --- src/rendezvous_mediator.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/rendezvous_mediator.rs b/src/rendezvous_mediator.rs index 9ef044fdd..07e45e77b 100644 --- a/src/rendezvous_mediator.rs +++ b/src/rendezvous_mediator.rs @@ -144,7 +144,7 @@ impl RendezvousMediator { pub async fn start_udp(server: ServerPtr, host: String) -> ResultType<()> { let host = check_port(&host, RENDEZVOUS_PORT); - let (mut socket, addr) = socket_client::new_udp_for(&host, CONNECT_TIMEOUT).await?; + let (mut socket, mut addr) = socket_client::new_udp_for(&host, CONNECT_TIMEOUT).await?; let mut rz = Self { addr: addr.clone(), host: host.clone(), @@ -232,9 +232,10 @@ impl RendezvousMediator { if last_dns_check.elapsed().as_millis() as i64 > DNS_INTERVAL { // in some case of network reconnect (dial IP network), // old UDP socket not work any more after network recover - if let Some((s, addr)) = socket_client::rebind_udp_for(&rz.host).await? { + if let Some((s, new_addr)) = socket_client::rebind_udp_for(&rz.host).await? { socket = s; - rz.addr = addr; + rz.addr = new_addr.clone(); + addr = new_addr; } last_dns_check = Instant::now(); }