From d7e882998ad1c4eab44de3dfe33f989705adf576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bogdan-=C8=98tefan=20Neac=C5=9Fu?= Date: Fri, 5 Jun 2026 14:50:34 +0300 Subject: [PATCH] Re-add peer when updating PSK --- .../src/node/wireguard/new_peer_registration/lp.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/gateway/src/node/wireguard/new_peer_registration/lp.rs b/gateway/src/node/wireguard/new_peer_registration/lp.rs index 352e517ccf..2fe751fecf 100644 --- a/gateway/src/node/wireguard/new_peer_registration/lp.rs +++ b/gateway/src/node/wireguard/new_peer_registration/lp.rs @@ -17,20 +17,23 @@ impl PeerRegistrator { /// In the case of an already registered WG peer, update its PSK. pub(super) async fn update_peer_psk( &self, - peer: PeerPublicKey, + peer_key: PeerPublicKey, psk: Key, ) -> Result<(), GatewayWireguardError> { + let encoded_psk = psk.to_lower_hex(); + // 1. check if the peer is currently being handled - if self.peer_manager.check_active_peer(peer).await? { + if let Some(mut peer) = self.peer_manager.query_peer(peer_key).await? { // 2. if so, force disconnect it (as we're handling new request from the same peer) - self.peer_manager.remove_peer(peer).await?; + self.peer_manager.remove_peer(peer_key).await?; + peer.preshared_key = Some(psk); + self.peer_manager.add_peer(peer).await?; } // 3. update the on-disk PSK - let encoded_psk = psk.to_lower_hex(); self.ecash_verifier .storage() - .update_peer_psk(&peer.to_string(), Some(&encoded_psk)) + .update_peer_psk(&peer_key.to_string(), Some(&encoded_psk)) .await?; Ok(())