Skip to content

Commit 7b71237

Browse files
authored
Update tcp socket correctly (#166)
* Update tcp socket correctly * fmt
1 parent e3a6fe7 commit 7b71237

File tree

1 file changed

+25
-23
lines changed

1 file changed

+25
-23
lines changed

src/discv5.rs

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -359,35 +359,37 @@ impl<P: ProtocolIdentity> Discv5<P> {
359359
/// Updates the local ENR TCP/UDP socket.
360360
pub fn update_local_enr_socket(&self, socket_addr: SocketAddr, is_tcp: bool) -> bool {
361361
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();
368368
}
369369
}
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();
375375
}
376376
}
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+
}
387390
}
388-
} else {
389-
false
390391
}
392+
false
391393
}
392394

393395
/// Allows application layer to insert an arbitrary field into the local ENR.

0 commit comments

Comments
 (0)