From 01c646a7ee975966e7ad5e80ac449f73bbd64d65 Mon Sep 17 00:00:00 2001 From: Jake McGinty Date: Wed, 25 Apr 2018 01:44:38 -0700 Subject: udp: make Endpoint implement Copy --- src/interface/config.rs | 2 +- src/interface/peer_server.rs | 2 +- src/peer.rs | 8 ++++---- src/udp/frame.rs | 2 +- src/udp/mod.rs | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/interface/config.rs b/src/interface/config.rs index d8a7a9d..488b5bb 100644 --- a/src/interface/config.rs +++ b/src/interface/config.rs @@ -258,7 +258,7 @@ impl ConfigurationService { } else { info.allowed_ips.extend_from_slice(&peer.info.allowed_ips); } - info.endpoint = info.endpoint.or(peer.info.endpoint.clone()); + info.endpoint = info.endpoint.or(peer.info.endpoint); info.keepalive = info.keepalive.or(peer.info.keepalive); info.psk = info.psk.or(peer.info.psk); state.router.add_allowed_ips(&info.allowed_ips, &peer_ref); diff --git a/src/interface/peer_server.rs b/src/interface/peer_server.rs index b541caa..4de6eec 100644 --- a/src/interface/peer_server.rs +++ b/src/interface/peer_server.rs @@ -146,7 +146,7 @@ impl PeerServer { .ok_or_else(|| err_msg("unknown peer pubkey"))?.clone(); let index = Self::unused_index(&mut state); - let (response, dead_index) = peer_ref.borrow_mut().complete_incoming_handshake(addr.clone(), index, handshake)?; + let (response, dead_index) = peer_ref.borrow_mut().complete_incoming_handshake(addr, index, handshake)?; if let Some(index) = dead_index { let _ = state.index_map.remove(&index); } diff --git a/src/peer.rs b/src/peer.rs index 7115a6f..4899893 100644 --- a/src/peer.rs +++ b/src/peer.rs @@ -221,7 +221,7 @@ impl Peer { pub fn initiate_new_session(&mut self, private_key: &[u8], index: u32) -> Result<(Endpoint, Vec, Option), Error> { let noise = noise::build_initiator(private_key, &self.info.pub_key, &self.info.psk)?; let mut session = Session::new(noise, index); - let endpoint = self.info.endpoint.as_ref().ok_or_else(|| err_msg("no known peer endpoint"))?; + let endpoint = self.info.endpoint.ok_or_else(|| err_msg("no known peer endpoint"))?; let mut packet = vec![0; 148]; let tai64n = Tai64n::now(); @@ -242,7 +242,7 @@ impl Peer { None }; - Ok((endpoint.clone(), packet, dead_index)) + Ok((endpoint, packet, dead_index)) } pub fn process_incoming_handshake(private_key: &[u8], packet: &Initiation) -> Result { @@ -378,7 +378,7 @@ impl Peer { pub fn handle_outgoing_transport(&mut self, packet: &[u8]) -> Result<(Endpoint, Vec), Error> { let session = self.sessions.current.as_mut().ok_or_else(|| err_msg("no current noise session"))?; - let endpoint = self.info.endpoint.as_ref().ok_or_else(|| err_msg("no known peer endpoint"))?; + let endpoint = self.info.endpoint.ok_or_else(|| err_msg("no known peer endpoint"))?; let padding = PADDING_MULTIPLE - (packet.len() % PADDING_MULTIPLE); let padded_len = packet.len() + padding; let mut out_packet = vec![0u8; padded_len + TRANSPORT_OVERHEAD]; @@ -395,7 +395,7 @@ impl Peer { self.tx_bytes += len as u64; session.last_sent = Timestamp::now(); out_packet.truncate(TRANSPORT_HEADER_SIZE + len); - Ok((endpoint.clone(), out_packet)) + Ok((endpoint, out_packet)) } pub fn to_config_string(&self) -> String { diff --git a/src/udp/frame.rs b/src/udp/frame.rs index 09418bb..b0f1dd4 100644 --- a/src/udp/frame.rs +++ b/src/udp/frame.rs @@ -141,7 +141,7 @@ pub type PeerServerMessage = (Endpoint, Vec); pub struct VecUdpCodec; impl VecUdpCodec { fn decode(&mut self, src: &Endpoint, buf: &[u8]) -> io::Result { - Ok((src.clone(), buf.to_vec())) + Ok((*src, buf.to_vec())) } fn encode(&mut self, msg: PeerServerMessage, buf: &mut Vec) -> Endpoint { diff --git a/src/udp/mod.rs b/src/udp/mod.rs index 7de1fb1..377092e 100644 --- a/src/udp/mod.rs +++ b/src/udp/mod.rs @@ -40,7 +40,7 @@ pub struct UdpSocket { // but this is for simplicity because nix only offers a to_std() that returns // `SocketAddr` from its `SockAddr`, so it makes the code cleaner with little // performance impact. -#[derive(Clone)] +#[derive(Clone, Copy)] pub enum Endpoint { V4(SocketAddr, Option), V6(SocketAddr, Option) -- cgit v1.2.3-59-g8ed1b