From c192afe9ebfaa20afb928e7f353b3abf02cc0ee6 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 16 Dec 2019 16:25:29 +0000 Subject: [PATCH 1/3] mix_peer: converting address to strongly typed socket address --- src/mix_peer.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mix_peer.rs b/src/mix_peer.rs index 6573c448f7..8aab5dda73 100644 --- a/src/mix_peer.rs +++ b/src/mix_peer.rs @@ -1,8 +1,9 @@ use std::error::Error; +use std::net::{Ipv4Addr, SocketAddrV4}; use tokio::prelude::*; pub struct MixPeer { - connection: String, + connection: SocketAddrV4, } impl MixPeer { From aa207e2c138b1bf44d47cc77b2b4c15cad3a8fb4 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 16 Dec 2019 16:25:49 +0000 Subject: [PATCH 2/3] mix_peer: using constant sized byte array for addressing --- src/mix_peer.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/mix_peer.rs b/src/mix_peer.rs index 8aab5dda73..053961718d 100644 --- a/src/mix_peer.rs +++ b/src/mix_peer.rs @@ -9,11 +9,12 @@ pub struct MixPeer { impl MixPeer { // note that very soon `next_hop_address` will be changed to `next_hop_metadata` pub fn new(next_hop_address: [u8; 32]) -> MixPeer { - let address = String::from_utf8_lossy(&next_hop_address) - .trim_end_matches(char::from(0)) - .to_string(); + let b = next_hop_address; + let host = Ipv4Addr::new(b[0], b[1], b[2], b[3]); + let port: u16 = u16::from_be_bytes([b[4], b[5]]); + let socket_address = SocketAddrV4::new(host, port); MixPeer { - connection: address, + connection: socket_address, } } From ddf0d762d7da440fe6a66a1f7a1a7e6a3bb4c31d Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 16 Dec 2019 16:26:30 +0000 Subject: [PATCH 3/3] mix_peer: adding a to_string() definition --- src/mix_peer.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mix_peer.rs b/src/mix_peer.rs index 053961718d..c2fbde8477 100644 --- a/src/mix_peer.rs +++ b/src/mix_peer.rs @@ -24,4 +24,8 @@ impl MixPeer { stream.write_all(&bytes).await?; Ok(()) } + + pub fn to_string(&self) -> String { + self.connection.to_string() + } }