From d7b412c1eb0d0e650316929ac3199c4fc80d2df4 Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 18 Jul 2017 15:58:32 -0400 Subject: [PATCH] overwrite existing address --- libi2pd_client/AddressBook.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/libi2pd_client/AddressBook.cpp b/libi2pd_client/AddressBook.cpp index d5620758..b40fadf6 100644 --- a/libi2pd_client/AddressBook.cpp +++ b/libi2pd_client/AddressBook.cpp @@ -376,12 +376,23 @@ namespace client continue; } numAddresses++; - if (m_Addresses.count(name) > 0) - continue; /* already exists */ - m_Addresses[name] = ident->GetIdentHash (); - m_Storage->AddAddress (ident); - if (is_update) - LogPrint(eLogInfo, "Addressbook: added new host: ", name); + auto it = m_Addresses.find (name); + if (it != m_Addresses.end ()) // aleady exists ? + { + if (it->second != ident->GetIdentHash ()) // address changed? + { + it->second = ident->GetIdentHash (); + m_Storage->AddAddress (ident); + LogPrint (eLogInfo, "Addressbook: updated host: ", name); + } + } + else + { + m_Addresses.insert (std::make_pair (name, ident->GetIdentHash ())); + m_Storage->AddAddress (ident); + if (is_update) + LogPrint (eLogInfo, "Addressbook: added new host: ", name); + } } else incomplete = f.eof ();