From a01e2213ebe6b23552fcdf3d0aa49c1d4d24cd5e Mon Sep 17 00:00:00 2001 From: orignal Date: Mon, 7 Jul 2014 15:35:42 -0400 Subject: [PATCH] delete obsolete requested destination --- NetDb.cpp | 5 ++++- NetDb.h | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/NetDb.cpp b/NetDb.cpp index 542961b0..3c240522 100644 --- a/NetDb.cpp +++ b/NetDb.cpp @@ -29,6 +29,7 @@ namespace data m_ExcludedPeers.insert (router->GetIdentHash ()); m_LastRouter = router; m_LastReplyTunnel = replyTunnel; + m_CreationTime = i2p::util::GetSecondsSinceEpoch (); return msg; } @@ -39,6 +40,7 @@ namespace data m_ExcludedPeers.insert (floodfill); m_LastRouter = nullptr; m_LastReplyTunnel = nullptr; + m_CreationTime = i2p::util::GetSecondsSinceEpoch (); return msg; } @@ -543,9 +545,10 @@ namespace data void NetDb::Explore (int numDestinations) { // clean up previous exploratories + uint64_t ts = i2p::util::GetSecondsSinceEpoch (); for (auto it = m_RequestedDestinations.begin (); it != m_RequestedDestinations.end ();) { - if (it->second->IsExploratory ()) + if (it->second->IsExploratory () || ts > it->second->GetCreationTime () + 60) // no response for 1 minute { delete it->second; it = m_RequestedDestinations.erase (it); diff --git a/NetDb.h b/NetDb.h index 5d369a99..1ea82f3e 100644 --- a/NetDb.h +++ b/NetDb.h @@ -25,7 +25,8 @@ namespace data RequestedDestination (const IdentHash& destination, bool isLeaseSet, bool isExploratory = false): m_Destination (destination), m_IsLeaseSet (isLeaseSet), m_IsExploratory (isExploratory), - m_LastRouter (nullptr), m_LastReplyTunnel (nullptr), m_LastOutboundTunnel (nullptr) {}; + m_LastRouter (nullptr), m_LastReplyTunnel (nullptr), m_LastOutboundTunnel (nullptr), + m_CreationTime (0) {}; const IdentHash& GetDestination () const { return m_Destination; }; int GetNumExcludedPeers () const { return m_ExcludedPeers.size (); }; @@ -37,6 +38,7 @@ namespace data bool IsExploratory () const { return m_IsExploratory; }; bool IsLeaseSet () const { return m_IsLeaseSet; }; bool IsExcluded (const IdentHash& ident) const { return m_ExcludedPeers.count (ident); }; + uint64_t GetCreationTime () const { return m_CreationTime; }; I2NPMessage * CreateRequestMessage (const RouterInfo * router, const i2p::tunnel::InboundTunnel * replyTunnel); I2NPMessage * CreateRequestMessage (const IdentHash& floodfill); @@ -51,6 +53,7 @@ namespace data const RouterInfo * m_LastRouter; const i2p::tunnel::InboundTunnel * m_LastReplyTunnel; i2p::tunnel::OutboundTunnel * m_LastOutboundTunnel; + uint64_t m_CreationTime; }; class NetDb