From fbff1eced41189c302ef888c7a799fbeff94419b Mon Sep 17 00:00:00 2001 From: Adrien Beraud Date: Sat, 17 Oct 2026 19:37:48 -0400 Subject: [PATCH] network: forget the peer ephemeral key on plaintext key advertisement A peer only advertises its key in plaintext when it doesn't know ours, e.g. after a restart: it lost our session, so answer with an Initial envelope. --- src/network_engine.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/network_engine.cpp b/src/network_engine.cpp index 154a62ba..d32821a3 100644 --- a/src/network_engine.cpp +++ b/src/network_engine.cpp @@ -678,6 +678,10 @@ NetworkEngine::process(std::unique_ptr&& msg, const SockAddr& fro node = cache.getNode(msg->id, from, now, true, msg->is_client); if (msg->peer) attachPeer(*node, msg->peer); + // Advertising its key in plaintext, the peer shows it lost our session, e.g. after a restart + if (trusted and not msg->encrypted and msg->transport_key) + if (const auto& peer = node->getTransport()) + peer->ephemeral.reset(); if (msg->type == MessageType::ValueUpdate) { if (not trusted)