Browse Source

Consider peers to be on same intranet if is_lan() returns true for both

nsgundy 2 years ago
parent
commit
85a20769fb
1 changed files with 7 additions and 10 deletions
  1. 7 10
      src/rendezvous_server.rs

+ 7 - 10
src/rendezvous_server.rs

@@ -706,17 +706,14 @@ impl RendezvousServer {
706 706
                 }
707 707
                 ph.nat_type = NatType::SYMMETRIC.into(); // will force relay
708 708
             }
709
-            let same_intranet = !ws
710
-                && match peer_addr {
711
-                    SocketAddr::V4(a) => match addr {
712
-                        SocketAddr::V4(b) => a.ip() == b.ip(),
709
+            let same_intranet: bool = !ws
710
+                && (peer_is_lan && is_lan || {
711
+                    match (peer_addr, addr) {
712
+                        (SocketAddr::V4(a), SocketAddr::V4(b)) => a.ip() == b.ip(),
713
+                        (SocketAddr::V6(a), SocketAddr::V6(b)) => a.ip() == b.ip(),
713 714
                         _ => false,
714
-                    },
715
-                    SocketAddr::V6(a) => match addr {
716
-                        SocketAddr::V6(b) => a.ip() == b.ip(),
717
-                        _ => false,
718
-                    },
719
-                };
715
+                    }
716
+                });
720 717
             let socket_addr = AddrMangle::encode(addr).into();
721 718
             if same_intranet {
722 719
                 log::debug!(