From ba22a940f16f0680ad66b5d649a868d06adf5096 Mon Sep 17 00:00:00 2001 From: orignal Date: Wed, 1 May 2024 12:08:47 -0400 Subject: [PATCH] 30 seconds timeout for exploratory requests --- libi2pd/NetDbRequests.cpp | 17 +++++++++++------ libi2pd/NetDbRequests.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/libi2pd/NetDbRequests.cpp b/libi2pd/NetDbRequests.cpp index a86692b7..162c5f31 100644 --- a/libi2pd/NetDbRequests.cpp +++ b/libi2pd/NetDbRequests.cpp @@ -181,12 +181,17 @@ namespace data { auto& dest = it->second; bool done = false; - if (ts < dest->GetCreationTime () + MAX_REQUEST_TIME) // request becomes worthless - { - if (ts > dest->GetLastRequestTime () + MIN_REQUEST_TIME) // try next floodfill if no response after min interval - done = !SendNextRequest (dest); - } - else // delete obsolete request + if (!dest->IsExploratory ()) + { + if (ts < dest->GetCreationTime () + MAX_REQUEST_TIME) // request becomes worthless + { + if (ts > dest->GetLastRequestTime () + MIN_REQUEST_TIME) // try next floodfill if no response after min interval + done = !SendNextRequest (dest); + } + else // delete obsolete request + done = true; + } + else if (ts >= dest->GetCreationTime () + MAX_EXPLORATORY_REQUEST_TIME) done = true; if (done) diff --git a/libi2pd/NetDbRequests.h b/libi2pd/NetDbRequests.h index 8c805540..01cc8153 100644 --- a/libi2pd/NetDbRequests.h +++ b/libi2pd/NetDbRequests.h @@ -24,6 +24,7 @@ namespace data const uint64_t MANAGE_REQUESTS_INTERVAL = 1; // in seconds const uint64_t MIN_REQUEST_TIME = 5; // in seconds const uint64_t MAX_REQUEST_TIME = MAX_NUM_REQUEST_ATTEMPTS * (MIN_REQUEST_TIME + MANAGE_REQUESTS_INTERVAL); + const uint64_t MAX_EXPLORATORY_REQUEST_TIME = 30; // in seconds class RequestedDestination {