Просмотр исходного кода

Fix ip4 mapped ip6 addresses not considered to be part of network

nsgundy лет назад: 2
Родитель
Сommit
aeeca0d7d1
1 измененных файлов с 10 добавлено и 2 удалено
  1. 10 2
      src/rendezvous_server.rs

+ 10 - 2
src/rendezvous_server.rs

@@ -1188,8 +1188,16 @@ impl RendezvousServer {
1188 1188
     #[inline]
1189 1189
     fn is_lan(&self, addr: SocketAddr) -> bool {
1190 1190
         if let Some(network) = &self.inner.mask {
1191
-            if let SocketAddr::V4(addr) = addr {
1192
-                return network.contains(*addr.ip());
1191
+            match addr {
1192
+                SocketAddr::V4(v4_socket_addr) => {
1193
+                    return network.contains(*v4_socket_addr.ip());
1194
+                }
1195
+                
1196
+                SocketAddr::V6(v6_socket_addr) => {
1197
+                    if let Some(v4_addr) = v6_socket_addr.ip().to_ipv4_mapped() {
1198
+                        return network.contains(v4_addr);
1199
+                    }
1200
+                }
1193 1201
             }
1194 1202
         }
1195 1203
         false