From fbd4fd9feaf1af27ef3a0ff2943d94fbce99a6b5 Mon Sep 17 00:00:00 2001 From: Alexis Sellier Date: Tue, 18 Oct 2022 12:33:12 +0200 Subject: [PATCH] Use session RNG for ping Signed-off-by: Alexis Sellier --- radicle-node/src/service.rs | 6 +++--- radicle-node/src/service/peer.rs | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/radicle-node/src/service.rs b/radicle-node/src/service.rs index 3936868d..74c78f9c 100644 --- a/radicle-node/src/service.rs +++ b/radicle-node/src/service.rs @@ -492,7 +492,7 @@ where let peer = self .sessions .entry(ip) - .or_insert_with(|| Session::new(*addr, Link::Outbound, persistent, &self.rng)); + .or_insert_with(|| Session::new(*addr, Link::Outbound, persistent, self.rng.clone())); peer.attempted(); } @@ -533,7 +533,7 @@ where addr, Link::Inbound, self.config.is_persistent(&address), - &self.rng, + self.rng.clone(), ), ); } @@ -929,7 +929,7 @@ where .filter(|(_, session)| session.last_active < *now - KEEP_ALIVE_DELTA) .map(|(_, session)| session); for session in inactive_sessions { - session.ping(&mut self.reactor, &self.rng).ok(); + session.ping(&mut self.reactor).ok(); } } diff --git a/radicle-node/src/service/peer.rs b/radicle-node/src/service/peer.rs index 137e3362..3bc83f8e 100644 --- a/radicle-node/src/service/peer.rs +++ b/radicle-node/src/service/peer.rs @@ -83,7 +83,7 @@ pub struct Session { } impl Session { - pub fn new(addr: net::SocketAddr, link: Link, persistent: bool, rng: &Rng) -> Self { + pub fn new(addr: net::SocketAddr, link: Link, persistent: bool, rng: Rng) -> Self { Self { addr, state: SessionState::default(), @@ -92,7 +92,7 @@ impl Session { persistent, last_active: LocalTime::default(), attempts: 0, - rng: rng.clone(), + rng, } } @@ -116,15 +116,16 @@ impl Session { self.attempts = 0; } - pub fn ping(&mut self, reactor: &mut Reactor, rng: &Rng) -> Result<(), SessionError> { + pub fn ping(&mut self, reactor: &mut Reactor) -> Result<(), SessionError> { if let SessionState::Negotiated { ping, .. } = &mut self.state { - let ponglen = rng.u16(0..wire::message::MAX_PAYLOAD_SIZE_BYTES); - let msg = Message::Ping { - ponglen, - zeroes: message::ZeroBytes::new( - rng.u16(0..(wire::message::MAX_PAYLOAD_SIZE_BYTES - (size_of::() as u16))), - ), - }; + let ponglen = self.rng.u16(0..wire::message::MAX_PAYLOAD_SIZE_BYTES); + let msg = + Message::Ping { + ponglen, + zeroes: message::ZeroBytes::new(self.rng.u16( + 0..(wire::message::MAX_PAYLOAD_SIZE_BYTES - (size_of::() as u16)), + )), + }; reactor.write(self.addr, msg); *ping = PingState::AwaitingResponse(ponglen);