diff --git a/libi2pd/NTCP2.cpp b/libi2pd/NTCP2.cpp index 12b4605f..9918efbc 100644 --- a/libi2pd/NTCP2.cpp +++ b/libi2pd/NTCP2.cpp @@ -719,7 +719,7 @@ namespace transport // ready to communicate auto existing = i2p::data::netdb.FindRouter (ri.GetRouterIdentity ()->GetIdentHash ()); // check if exists already SetRemoteIdentity (existing ? existing->GetRouterIdentity () : ri.GetRouterIdentity ()); - m_Server.AddNTCP2Session (shared_from_this ()); + m_Server.AddNTCP2Session (shared_from_this (), true); Established (); ReceiveLength (); } @@ -1258,7 +1258,7 @@ namespace transport } } - bool NTCP2Server::AddNTCP2Session (std::shared_ptr session) + bool NTCP2Server::AddNTCP2Session (std::shared_ptr session, bool incoming) { if (!session || !session->GetRemoteIdentity ()) return false; auto& ident = session->GetRemoteIdentity ()->GetIdentHash (); @@ -1270,6 +1270,8 @@ namespace transport return false; } m_NTCP2Sessions.insert (std::make_pair (ident, session)); + if (incoming) + m_PendingIncomingSessions.remove (session); return true; } diff --git a/libi2pd/NTCP2.h b/libi2pd/NTCP2.h index 2bfc72b9..10f4f483 100644 --- a/libi2pd/NTCP2.h +++ b/libi2pd/NTCP2.h @@ -227,7 +227,7 @@ namespace transport void Start (); void Stop (); - bool AddNTCP2Session (std::shared_ptr session); + bool AddNTCP2Session (std::shared_ptr session, bool incoming = false); void RemoveNTCP2Session (std::shared_ptr session); std::shared_ptr FindNTCP2Session (const i2p::data::IdentHash& ident);