aboutsummaryrefslogtreecommitdiffstats
path: root/src/peer.rs
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2018-04-09 21:30:25 -0700
committerJake McGinty <me@jake.su>2018-04-09 21:30:25 -0700
commit492d320e4930171130d2eebab666e1fbda4a7cf9 (patch)
tree4c98ec97ee6aed5823d1667827541b4785108bba /src/peer.rs
parentmeta: cargo update (diff)
downloadwireguard-rs-492d320e4930171130d2eebab666e1fbda4a7cf9.tar.xz
wireguard-rs-492d320e4930171130d2eebab666e1fbda4a7cf9.zip
peer: update endpoint on handshake response messages too
Diffstat (limited to 'src/peer.rs')
-rw-r--r--src/peer.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/peer.rs b/src/peer.rs
index 2331a09..9aaf422 100644
--- a/src/peer.rs
+++ b/src/peer.rs
@@ -312,13 +312,14 @@ impl Peer {
self.cookie.consume_reply(reply)
}
- pub fn process_incoming_handshake_response(&mut self, packet: &Response) -> Result<Option<u32>, Error> {
+ pub fn process_incoming_handshake_response(&mut self, addr: SocketAddr, packet: &Response) -> Result<Option<u32>, Error> {
let mut session = mem::replace(&mut self.sessions.next, None).ok_or_else(|| err_msg("no next session"))?;
let _ = session.noise.read_message(packet.noise_bytes(), &mut [])?;
session = session.into_transport_mode()?;
session.their_index = packet.their_index();
session.birthday = Timestamp::now();
self.last_handshake = Timestamp::now();
+ self.info.endpoint = Some(addr);
let current = mem::replace(&mut self.sessions.current, Some(session));
let dead = mem::replace(&mut self.sessions.past, current);