Browse Source

correct termination if session already exists

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

9
libi2pd/NTCP2.cpp

@ -706,7 +706,8 @@ namespace transport @@ -706,7 +706,8 @@ 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);
if (m_Server.AddNTCP2Session (shared_from_this (), true))
{
Established ();
ReceiveLength ();
}
@ -716,6 +717,9 @@ namespace transport @@ -716,6 +717,9 @@ namespace transport
else
Terminate ();
}
else
Terminate ();
}
}
void NTCP2Session::SetSipKeys (const uint8_t * sendSipKey, const uint8_t * receiveSipKey)
@ -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