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 ();