diff --git a/LeaseSet.h b/LeaseSet.h index 5bb75741..fababcf0 100644 --- a/LeaseSet.h +++ b/LeaseSet.h @@ -27,7 +27,9 @@ namespace data public: LeaseSet (const uint8_t * buf, int len); - + LeaseSet (const LeaseSet& ) = default; + LeaseSet& operator=(const LeaseSet& ) = default; + // implements RoutingDestination const Identity& GetIdentity () const { return m_Identity; }; const IdentHash& GetIdentHash () const { return m_IdentHash; }; diff --git a/NetDb.cpp b/NetDb.cpp index 870027e7..b0c95482 100644 --- a/NetDb.cpp +++ b/NetDb.cpp @@ -119,10 +119,9 @@ namespace data if (r->GetTimestamp () > it->second->GetTimestamp ()) { LogPrint ("RouterInfo updated"); - *m_RouterInfos[r->GetIdentHash ()] = *r; // we can't replace point because it's used by tunnels - } - else - delete r; + *(it->second) = *r; // we can't replace pointer because it's used by tunnels + } + delete r; } else { @@ -135,7 +134,18 @@ namespace data { LeaseSet * l = new LeaseSet (buf, len); DeleteRequestedDestination (l->GetIdentHash ()); - m_LeaseSets[l->GetIdentHash ()] = l; + auto it = m_LeaseSets.find(l->GetIdentHash ()); + if (it != m_LeaseSets.end ()) + { + LogPrint ("LeaseSet updated"); + *(it->second) = *l; // we can't replace pointer because it's used by streams + delete l; + } + else + { + LogPrint ("New LeaseSet added"); + m_LeaseSets[l->GetIdentHash ()] = l; + } } RouterInfo * NetDb::FindRouter (const IdentHash& ident) const