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 {