From 2f490e6262b2eb778c3850e2f80d4c3800b5e23e Mon Sep 17 00:00:00 2001 From: acetone <63557806+freeacetone@users.noreply.github.com> Date: Tue, 21 Jul 2026 20:43:54 +0300 Subject: [PATCH] fix data race on intermediate queue in SSU2 session termination --- libi2pd/SSU2Session.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libi2pd/SSU2Session.cpp b/libi2pd/SSU2Session.cpp index 1fe00982..e10d5a20 100644 --- a/libi2pd/SSU2Session.cpp +++ b/libi2pd/SSU2Session.cpp @@ -292,8 +292,11 @@ namespace transport #if OPENSSL_PQ m_PQKeys.reset (nullptr); #endif - if (!m_IntermediateQueue.empty ()) - m_SendQueue.splice (m_SendQueue.end (), m_IntermediateQueue); + { + std::lock_guard l(m_IntermediateQueueMutex); + if (!m_IntermediateQueue.empty ()) + m_SendQueue.splice (m_SendQueue.end (), m_IntermediateQueue); + } for (auto& it: m_SendQueue) it->Drop (); m_SendQueue.clear ();