Browse Source

delete invalid sessions from peers

pull/1825/head
orignal 2 years ago
parent
commit
8320987124
  1. 1
      libi2pd/TransportSession.h
  2. 5
      libi2pd/Transports.cpp

1
libi2pd/TransportSession.h

@ -113,6 +113,7 @@ namespace transport @@ -113,6 +113,7 @@ namespace transport
virtual uint32_t GetRelayTag () const { return 0; };
virtual void SendLocalRouterInfo (bool update = false) { SendI2NPMessages ({ CreateDatabaseStoreMsg () }); };
virtual void SendI2NPMessages (const std::vector<std::shared_ptr<I2NPMessage> >& msgs) = 0;
virtual bool IsEstablished () const = 0;
protected:

5
libi2pd/Transports.cpp

@ -743,6 +743,11 @@ namespace transport @@ -743,6 +743,11 @@ namespace transport
auto ts = i2p::util::GetSecondsSinceEpoch ();
for (auto it = m_Peers.begin (); it != m_Peers.end (); )
{
it->second.sessions.remove_if (
[](std::shared_ptr<TransportSession> session)->bool
{
return !session || !session->IsEstablished ();
});
if (it->second.sessions.empty () && ts > it->second.creationTime + SESSION_CREATION_TIMEOUT)
{
LogPrint (eLogWarning, "Transports: Session to peer ", it->first.ToBase64 (), " has not been created in ", SESSION_CREATION_TIMEOUT, " seconds");

Loading…
Cancel
Save