diff --git a/Destination.cpp b/Destination.cpp index edf8bc6f..b122172e 100644 --- a/Destination.cpp +++ b/Destination.cpp @@ -566,10 +566,25 @@ namespace client if (ecode != boost::asio::error::operation_aborted) { CleanupRoutingSessions (); + CleanupRemoteLeaseSets (); m_CleanupTimer.expires_from_now (boost::posix_time::minutes (DESTINATION_CLEANUP_TIMEOUT)); m_CleanupTimer.async_wait (std::bind (&ClientDestination::HandleCleanupTimer, this, std::placeholders::_1)); } } + + void ClientDestination::CleanupRemoteLeaseSets () + { + for (auto it = m_RemoteLeaseSets.begin (); it != m_RemoteLeaseSets.end ();) + { + if (!it->second->HasNonExpiredLeases ()) // all leases expired + { + LogPrint ("Remote LeaseSet ", it->second->GetIdentHash ().ToBase64 (), " expired"); + it = m_RemoteLeaseSets.erase (it); + } + else + it++; + } + } } } diff --git a/Destination.h b/Destination.h index 1e49e932..db7a3089 100644 --- a/Destination.h +++ b/Destination.h @@ -111,6 +111,7 @@ namespace client bool SendLeaseSetRequest (const i2p::data::IdentHash& dest, std::shared_ptr nextFloodfill, LeaseSetRequest * request); void HandleRequestTimoutTimer (const boost::system::error_code& ecode, const i2p::data::IdentHash& dest); void HandleCleanupTimer (const boost::system::error_code& ecode); + void CleanupRemoteLeaseSets (); private: diff --git a/NetDb.cpp b/NetDb.cpp index ec3fa113..90744fca 100644 --- a/NetDb.cpp +++ b/NetDb.cpp @@ -857,7 +857,7 @@ namespace data { for (auto it = m_LeaseSets.begin (); it != m_LeaseSets.end ();) { - if (it->second->HasNonExpiredLeases ()) // all leases expired + if (!it->second->HasNonExpiredLeases ()) // all leases expired { LogPrint ("LeaseSet ", it->second->GetIdentHash ().ToBase64 (), " expired"); it = m_LeaseSets.erase (it);