diff --git a/src/avalanche/processor.h b/src/avalanche/processor.h --- a/src/avalanche/processor.h +++ b/src/avalanche/processor.h @@ -156,7 +156,8 @@ std::unique_ptr chainNotificationsHandler; Processor(interfaces::Chain &chain, CConnman *connmanIn, - std::unique_ptr peerDataIn, CKey sessionKeyIn); + std::unique_ptr peerDataIn, CKey sessionKeyIn, + std::chrono::milliseconds queryTimeoutDurationIn); public: ~Processor(); diff --git a/src/avalanche/processor.cpp b/src/avalanche/processor.cpp --- a/src/avalanche/processor.cpp +++ b/src/avalanche/processor.cpp @@ -130,8 +130,9 @@ }; Processor::Processor(interfaces::Chain &chain, CConnman *connmanIn, - std::unique_ptr peerDataIn, CKey sessionKeyIn) - : connman(connmanIn), queryTimeoutDuration(AVALANCHE_DEFAULT_QUERY_TIMEOUT), + std::unique_ptr peerDataIn, CKey sessionKeyIn, + std::chrono::milliseconds queryTimeoutDurationIn) + : connman(connmanIn), queryTimeoutDuration(queryTimeoutDurationIn), round(0), peerManager(std::make_unique()), peerData(std::move(peerDataIn)), sessionKey(std::move(sessionKeyIn)) { // Make sure we get notified of chain state changes. @@ -238,9 +239,14 @@ } } + std::chrono::milliseconds queryTimeout = std::chrono::milliseconds{ + gArgs.GetArg("-avaquerytimeout", + count_microseconds(AVALANCHE_DEFAULT_QUERY_TIMEOUT))}; + // We can't use std::make_unique with a private constructor - return std::unique_ptr(new Processor( - chain, connman, std::move(peerData), std::move(sessionKey))); + return std::unique_ptr( + new Processor(chain, connman, std::move(peerData), + std::move(sessionKey), queryTimeout)); } bool Processor::addBlockToReconcile(const CBlockIndex *pindex) { diff --git a/src/init.cpp b/src/init.cpp --- a/src/init.cpp +++ b/src/init.cpp @@ -1325,6 +1325,12 @@ strprintf("Enable avalanche proof replacement (default: %u)", AVALANCHE_DEFAULT_PROOF_REPLACEMENT_ENABLED), ArgsManager::ALLOW_BOOL, OptionsCategory::AVALANCHE); + argsman.AddArg( + "-avaquerytimeout", + strprintf( + "Number of milliseconds before timing out a poll (default: %u)", + count_milliseconds(AVALANCHE_DEFAULT_QUERY_TIMEOUT)), + ArgsManager::ALLOW_ANY, OptionsCategory::AVALANCHE); argsman.AddArg( "-avacooldown", strprintf("Mandatory cooldown between two avapoll (default: %u)",