From bceae244c17d8463249ff56fe9f79e164a647553 Mon Sep 17 00:00:00 2001 From: orignal Date: Wed, 22 Jun 2022 13:15:25 -0400 Subject: [PATCH] delete pending outgoind session when SessionCreated received --- libi2pd/SSU2.cpp | 5 +++++ libi2pd/SSU2.h | 1 + libi2pd/SSU2Session.cpp | 1 + 3 files changed, 7 insertions(+) diff --git a/libi2pd/SSU2.cpp b/libi2pd/SSU2.cpp index dc6ad613..3e0942b1 100644 --- a/libi2pd/SSU2.cpp +++ b/libi2pd/SSU2.cpp @@ -285,6 +285,11 @@ namespace transport return it->second; return nullptr; } + + void SSU2Server::RemovePendingOutgoingSession (const boost::asio::ip::udp::endpoint& ep) + { + m_PendingOutgoingSessions.erase (ep); + } std::shared_ptr SSU2Server::GetRandomSession (i2p::data::RouterInfo::CompatibleTransports remoteTransports) const { diff --git a/libi2pd/SSU2.h b/libi2pd/SSU2.h index 78eb19c4..a2e3e76b 100644 --- a/libi2pd/SSU2.h +++ b/libi2pd/SSU2.h @@ -55,6 +55,7 @@ namespace transport void RemoveSession (uint64_t connID); void AddSessionByRouterHash (std::shared_ptr session); bool AddPendingOutgoingSession (std::shared_ptr session); + void RemovePendingOutgoingSession (const boost::asio::ip::udp::endpoint& ep); std::shared_ptr FindSession (const i2p::data::IdentHash& ident) const; std::shared_ptr FindPendingOutgoingSession (const boost::asio::ip::udp::endpoint& ep) const; std::shared_ptr GetRandomSession (i2p::data::RouterInfo::CompatibleTransports remoteTransports) const; diff --git a/libi2pd/SSU2Session.cpp b/libi2pd/SSU2Session.cpp index 77d3b787..e002c299 100644 --- a/libi2pd/SSU2Session.cpp +++ b/libi2pd/SSU2Session.cpp @@ -545,6 +545,7 @@ namespace transport HandlePayload (decryptedPayload.data (), decryptedPayload.size ()); m_Server.AddSession (shared_from_this ()); + m_Server.RemovePendingOutgoingSession (m_RemoteEndpoint); SendSessionConfirmed (headerX + 16); KDFDataPhase (m_KeyDataSend, m_KeyDataReceive); Established ();