From 1e7254dfaa157979655cda19b295cccb4517d35d Mon Sep 17 00:00:00 2001 From: orignal Date: Wed, 22 Jan 2025 13:25:11 -0500 Subject: [PATCH] don't delete router's buffer if an update received or connecting --- libi2pd/NetDb.cpp | 1 + libi2pd/Transports.cpp | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libi2pd/NetDb.cpp b/libi2pd/NetDb.cpp index e5d3fc09..ac786a29 100644 --- a/libi2pd/NetDb.cpp +++ b/libi2pd/NetDb.cpp @@ -294,6 +294,7 @@ namespace data } else { + r->CancelBufferToDelete (); // since an update received if (CheckLogLevel (eLogDebug)) LogPrint (eLogDebug, "NetDb: RouterInfo is older: ", ident.ToBase64()); updated = false; diff --git a/libi2pd/Transports.cpp b/libi2pd/Transports.cpp index b9971a77..22646d94 100644 --- a/libi2pd/Transports.cpp +++ b/libi2pd/Transports.cpp @@ -560,7 +560,14 @@ namespace transport bool Transports::ConnectToPeer (const i2p::data::IdentHash& ident, std::shared_ptr peer) { if (!peer->router) // reconnect - peer->SetRouter (netdb.FindRouter (ident)); // try to get new one from netdb + { + auto r = netdb.FindRouter (ident); // try to get new one from netdb + if (r) + { + peer->SetRouter (r); + r->CancelBufferToDelete (); + } + } if (peer->router) // we have RI already { if (peer->priority.empty ())