@@ -359,35 +359,37 @@ impl<P: ProtocolIdentity> Discv5<P> {
359
359
/// Updates the local ENR TCP/UDP socket.
360
360
pub fn update_local_enr_socket ( & self , socket_addr : SocketAddr , is_tcp : bool ) -> bool {
361
361
let mut local_enr = self . local_enr . write ( ) ;
362
- let update_socket : Option < SocketAddr > = match socket_addr {
363
- SocketAddr :: V4 ( socket_addr ) => {
364
- if Some ( socket_addr ) != local_enr. udp4_socket ( ) {
365
- Some ( socket_addr . into ( ) )
366
- } else {
367
- None
362
+ match ( is_tcp , socket_addr) {
363
+ ( false , SocketAddr :: V4 ( specific_socket_addr ) ) => {
364
+ if Some ( specific_socket_addr ) != local_enr. udp4_socket ( ) {
365
+ return local_enr
366
+ . set_udp_socket ( socket_addr , & self . enr_key . read ( ) )
367
+ . is_ok ( ) ;
368
368
}
369
369
}
370
- SocketAddr :: V6 ( socket_addr ) => {
371
- if Some ( socket_addr ) != local_enr. udp6_socket ( ) {
372
- Some ( socket_addr . into ( ) )
373
- } else {
374
- None
370
+ ( true , SocketAddr :: V4 ( specific_socket_addr ) ) => {
371
+ if Some ( specific_socket_addr ) != local_enr. tcp4_socket ( ) {
372
+ return local_enr
373
+ . set_tcp_socket ( socket_addr , & self . enr_key . read ( ) )
374
+ . is_ok ( ) ;
375
375
}
376
376
}
377
- } ;
378
- if let Some ( new_socket_addr) = update_socket {
379
- if is_tcp {
380
- local_enr
381
- . set_tcp_socket ( new_socket_addr, & self . enr_key . read ( ) )
382
- . is_ok ( )
383
- } else {
384
- local_enr
385
- . set_udp_socket ( new_socket_addr, & self . enr_key . read ( ) )
386
- . is_ok ( )
377
+ ( false , SocketAddr :: V6 ( specific_socket_addr) ) => {
378
+ if Some ( specific_socket_addr) != local_enr. udp6_socket ( ) {
379
+ return local_enr
380
+ . set_udp_socket ( socket_addr, & self . enr_key . read ( ) )
381
+ . is_ok ( ) ;
382
+ }
383
+ }
384
+ ( true , SocketAddr :: V6 ( specific_socket_addr) ) => {
385
+ if Some ( specific_socket_addr) != local_enr. tcp6_socket ( ) {
386
+ return local_enr
387
+ . set_tcp_socket ( socket_addr, & self . enr_key . read ( ) )
388
+ . is_ok ( ) ;
389
+ }
387
390
}
388
- } else {
389
- false
390
391
}
392
+ false
391
393
}
392
394
393
395
/// Allows application layer to insert an arbitrary field into the local ENR.
0 commit comments