always lookup SSU session if peer's endpoint doesn't match

This commit is contained in:
orignal 2019-04-25 12:54:44 -04:00
parent 1bfb9b02f5
commit 5e42947fbd
3 changed files with 12 additions and 15 deletions

View file

@ -328,7 +328,11 @@ namespace transport
{
if (!session || session->GetRemoteEndpoint () != packet->from) // we received packet for other session than previous
{
if (session) session->FlushData ();
if (session)
{
session->FlushData ();
session = nullptr;
}
auto it = sessions->find (packet->from);
if (it != sessions->end ())
session = it->second;
@ -751,10 +755,7 @@ namespace transport
{
auto session = it.second;
if (it.first != session->GetRemoteEndpoint ())
{
LogPrint (eLogWarning, "SSU: remote endpoint ", session->GetRemoteEndpoint (), " doesn't match key ", it.first, " adjusted");
session->SetRemoteEndpoint (it.first); // TODO: investigate why it happens
}
m_Service.post ([session]
{
LogPrint (eLogWarning, "SSU: no activity with ", session->GetRemoteEndpoint (), " for ", session->GetTerminationTimeout (), " seconds");
@ -782,10 +783,7 @@ namespace transport
{
auto session = it.second;
if (it.first != session->GetRemoteEndpoint ())
{
LogPrint (eLogWarning, "SSU: remote endpoint ", session->GetRemoteEndpoint (), " doesn't match key ", it.first, " adjusted");
session->SetRemoteEndpoint (it.first); // TODO: investigate why it happens
}
LogPrint (eLogWarning, "SSU: remote endpoint ", session->GetRemoteEndpoint (), " doesn't match key ", it.first);
m_ServiceV6.post ([session]
{
LogPrint (eLogWarning, "SSU: no activity with ", session->GetRemoteEndpoint (), " for ", session->GetTerminationTimeout (), " seconds");