Browse Source

correct termination if session already exists

pull/1502/head
orignal 5 years ago
parent
commit
49c1e47736
  1. 13
      libi2pd/NTCP2.cpp

13
libi2pd/NTCP2.cpp

@ -706,9 +706,13 @@ namespace transport @@ -706,9 +706,13 @@ 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 (), true);
Established ();
ReceiveLength ();
if (m_Server.AddNTCP2Session (shared_from_this (), true))
{
Established ();
ReceiveLength ();
}
else
Terminate ();
}
else
Terminate ();
@ -1258,7 +1262,6 @@ namespace transport @@ -1258,7 +1262,6 @@ namespace transport
if (it != m_NTCP2Sessions.end ())
{
LogPrint (eLogWarning, "NTCP2: session to ", ident.ToBase64 (), " already exists");
session->Terminate();
return false;
}
m_NTCP2Sessions.insert (std::make_pair (ident, session));
@ -1301,6 +1304,8 @@ namespace transport @@ -1301,6 +1304,8 @@ namespace transport
});
conn->GetSocket ().async_connect (boost::asio::ip::tcp::endpoint (address, port), std::bind (&NTCP2Server::HandleConnect, this, std::placeholders::_1, conn, timer));
}
else
conn->Terminate ();
});
}

Loading…
Cancel
Save