@@ -68,6 +68,7 @@ fn is_quic_addr(addr: &Multiaddr, v1: bool) -> bool {
68
68
&& fifth. is_none ( )
69
69
}
70
70
71
+ /// Whether an [`Multiaddr`] is a valid for the TCP transport.
71
72
fn is_tcp_addr ( addr : & Multiaddr ) -> bool {
72
73
use Protocol :: * ;
73
74
@@ -85,6 +86,13 @@ fn is_tcp_addr(addr: &Multiaddr) -> bool {
85
86
matches ! ( first, Ip4 ( _) | Ip6 ( _) | Dns ( _) | Dns4 ( _) | Dns6 ( _) ) && matches ! ( second, Tcp ( _) )
86
87
}
87
88
89
+ /// Whether the server, and observed [`Multiaddr`] are equivalent transports.
90
+ fn is_valid_connection ( server : & Multiaddr , observed : & Multiaddr ) -> bool {
91
+ ( is_tcp_addr ( server) && is_tcp_addr ( observed) )
92
+ || ( is_quic_addr ( server, true ) && is_quic_addr ( observed, true ) )
93
+ || ( is_quic_addr ( server, false ) && is_quic_addr ( observed, false ) )
94
+ }
95
+
88
96
/// Network behaviour that automatically identifies nodes periodically, returns information
89
97
/// about them, and answers identify queries from other nodes.
90
98
///
@@ -329,10 +337,7 @@ impl Behaviour {
329
337
. listen_addresses
330
338
. iter ( )
331
339
. filter_map ( |server| {
332
- if ( is_tcp_addr ( server) && is_tcp_addr ( observed) )
333
- || ( is_quic_addr ( server, true ) && is_quic_addr ( observed, true ) )
334
- || ( is_quic_addr ( server, false ) && is_quic_addr ( observed, false ) )
335
- {
340
+ if is_valid_connection ( server, observed) {
336
341
_address_translation ( server, observed)
337
342
} else {
338
343
None
0 commit comments