From e070ce4e3493dd06c9572f7b79e3bbfb2cf30d34 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Wed, 24 Jan 2018 09:35:24 -0500 Subject: [PATCH] check for valid LS before updating --- libi2pd/NetDb.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/libi2pd/NetDb.cpp b/libi2pd/NetDb.cpp index 0215c570..afe2fdde 100644 --- a/libi2pd/NetDb.cpp +++ b/libi2pd/NetDb.cpp @@ -237,19 +237,17 @@ namespace data auto it = m_LeaseSets.find(ident); if (it != m_LeaseSets.end ()) { - if (it->second->IsNewer (buf, len)) + /* make sure LS is valid before updating */ + LeaseSet ls(buf, len, false); + if(!ls.IsValid()) + { + LogPrint(eLogInfo, "NetDb: Updated LeaseSet is Invalid: ", ident.ToBase32()); + } + else if (it->second->IsNewer (buf, len)) { it->second->Update (buf, len); - if (it->second->IsValid ()) - { - LogPrint (eLogInfo, "NetDb: LeaseSet updated: ", ident.ToBase32()); - updated = true; - } - else - { - LogPrint (eLogWarning, "NetDb: LeaseSet update failed: ", ident.ToBase32()); - m_LeaseSets.erase (it); - } + LogPrint (eLogInfo, "NetDb: LeaseSet updated: ", ident.ToBase32()); + updated = true; } else LogPrint (eLogDebug, "NetDb: LeaseSet is older: ", ident.ToBase32());