Browse Source

fix is_loopback

rustdesk 2 years ago
parent
commit
f1e941bf9f
2 changed files with 5 additions and 4 deletions
  1. 3 2
      src/relay_server.rs
  2. 2 2
      src/rendezvous_server.rs

+ 3 - 2
src/relay_server.rs

@@ -374,8 +374,8 @@ async fn handle_connection(
374
     key: &str,
374
     key: &str,
375
     ws: bool,
375
     ws: bool,
376
 ) {
376
 ) {
377
-    let ip = addr.ip().to_string();
378
-    if !ws && ip == "127.0.0.1" {
377
+    let ip = hbb_common::try_into_v4(addr).ip();
378
+    if !ws && ip.is_loopback() {
379
         let limiter = limiter.clone();
379
         let limiter = limiter.clone();
380
         tokio::spawn(async move {
380
         tokio::spawn(async move {
381
             let mut stream = stream;
381
             let mut stream = stream;
@@ -389,6 +389,7 @@ async fn handle_connection(
389
         });
389
         });
390
         return;
390
         return;
391
     }
391
     }
392
+    let ip = ip.to_string();
392
     if BLOCKLIST.read().await.get(&ip).is_some() {
393
     if BLOCKLIST.read().await.get(&ip).is_some() {
393
         log::info!("{} blocked", ip);
394
         log::info!("{} blocked", ip);
394
         return;
395
         return;

+ 2 - 2
src/rendezvous_server.rs

@@ -436,7 +436,7 @@ impl RendezvousServer {
436
                     self.handle_local_addr(la, addr, Some(socket)).await?;
436
                     self.handle_local_addr(la, addr, Some(socket)).await?;
437
                 }
437
                 }
438
                 Some(rendezvous_message::Union::ConfigureUpdate(mut cu)) => {
438
                 Some(rendezvous_message::Union::ConfigureUpdate(mut cu)) => {
439
-                    if addr.ip().is_loopback() && cu.serial > self.inner.serial {
439
+                    if try_into_v4(addr).ip().is_loopback() && cu.serial > self.inner.serial {
440
                         let mut inner: Inner = (*self.inner).clone();
440
                         let mut inner: Inner = (*self.inner).clone();
441
                         inner.serial = cu.serial;
441
                         inner.serial = cu.serial;
442
                         self.inner = Arc::new(inner);
442
                         self.inner = Arc::new(inner);
@@ -1203,7 +1203,7 @@ impl RendezvousServer {
1203
                 }
1203
                 }
1204
 
1204
 
1205
                 SocketAddr::V6(v6_socket_addr) => {
1205
                 SocketAddr::V6(v6_socket_addr) => {
1206
-                    if let Some(v4_addr) = v6_socket_addr.ip().to_ipv4_mapped() {
1206
+                    if let Some(v4_addr) = v6_socket_addr.ip().to_ipv4() {
1207
                         return network.contains(v4_addr);
1207
                         return network.contains(v4_addr);
1208
                     }
1208
                     }
1209
                 }
1209
                 }