diff --git a/libi2pd/NetDb.cpp b/libi2pd/NetDb.cpp index f436a436..d32f113d 100644 --- a/libi2pd/NetDb.cpp +++ b/libi2pd/NetDb.cpp @@ -654,7 +654,7 @@ namespace data std::string ident = it.second->GetIdentHashBase64(); if (it.second->IsUpdated ()) { - if (it.second->GetBuffer ()) + if (it.second->GetBuffer () && !it.second->IsUnreachable ()) { // we have something to save std::shared_ptr buffer; @@ -663,9 +663,8 @@ namespace data buffer = it.second->CopyBuffer (); it.second->ScheduleBufferToDelete (); } - if (buffer && !it.second->IsUnreachable ()) // don't save bad router + if (buffer) saveToDisk.push_back(std::make_pair(ident, buffer)); - it.second->SetUnreachable (false); } it.second->SetUpdated (false); updatedCount++; diff --git a/libi2pd/RouterInfo.h b/libi2pd/RouterInfo.h index 719d5795..beeba5bf 100644 --- a/libi2pd/RouterInfo.h +++ b/libi2pd/RouterInfo.h @@ -293,7 +293,7 @@ namespace data void DeleteBuffer () { m_Buffer = nullptr; m_IsBufferScheduledToDelete = false; }; std::shared_ptr GetSharedBuffer () const { return m_Buffer; }; std::shared_ptr CopyBuffer () const; - void ScheduleBufferToDelete () { m_IsBufferScheduledToDelete = false; }; + void ScheduleBufferToDelete () { m_IsBufferScheduledToDelete = true; }; bool IsBufferScheduledToDelete () const { return m_IsBufferScheduledToDelete; }; bool IsUpdated () const { return m_IsUpdated; };