Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/llmq/quorums.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ void CQuorumManager::UpdatedBlockTip(const CBlockIndex* pindexNew, bool fInitial
LOCK(cs_data_requests);
auto it = mapQuorumDataRequests.begin();
while (it != mapQuorumDataRequests.end()) {
if (it->second.IsExpired()) {
if (it->second.IsExpired(/*add_bias=*/true)) {
it = mapQuorumDataRequests.erase(it);
} else {
++it;
Expand Down Expand Up @@ -474,7 +474,7 @@ bool CQuorumManager::RequestQuorumData(CNode* pfrom, Consensus::LLMQType llmqTyp
key.quorumHash = pQuorumBaseBlockIndex->GetBlockHash();
key.llmqType = llmqType;
auto it = mapQuorumDataRequests.emplace(key, CQuorumDataRequest(llmqType, pQuorumBaseBlockIndex->GetBlockHash(), nDataMask, proTxHash));
if (!it.second && !it.first->second.IsExpired()) {
if (!it.second && !it.first->second.IsExpired(/*add_bias=*/true)) {
LogPrint(BCLog::LLMQ, "CQuorumManager::%s -- Already requested\n", __func__);
return false;
}
Expand Down Expand Up @@ -646,7 +646,7 @@ void CQuorumManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, C
auto it = mapQuorumDataRequests.find(key);
if (it == mapQuorumDataRequests.end()) {
it = mapQuorumDataRequests.emplace(key, request).first;
} else if (it->second.IsExpired()) {
} else if (it->second.IsExpired(/*add_bias=*/false)) {
it->second = request;
} else {
errorHandler("Request limit exceeded", 25);
Expand Down Expand Up @@ -901,7 +901,7 @@ void CQuorumManager::StartQuorumDataRecoveryThread(const CQuorumCPtr pQuorum, co
key.quorumHash = pQuorum->qc->quorumHash;
key.llmqType = pQuorum->qc->llmqType;
auto it = mapQuorumDataRequests.find(key);
if (it != mapQuorumDataRequests.end() && !it->second.IsExpired()) {
if (it != mapQuorumDataRequests.end() && !it->second.IsExpired(/*add_bias=*/true)) {
printLog("Already asked");
continue;
}
Expand Down
3 changes: 2 additions & 1 deletion src/llmq/quorums.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ class CQuorumDataRequest
bool fProcessed{false};

static constexpr int64_t EXPIRATION_TIMEOUT{300};
static constexpr int64_t EXPIRATION_BIAS{60};

public:

Expand Down Expand Up @@ -119,7 +120,7 @@ class CQuorumDataRequest
Errors GetError() const { return nError; }
std::string GetErrorString() const;

bool IsExpired() const { return (GetTime() - nTime) >= EXPIRATION_TIMEOUT; }
bool IsExpired(bool add_bias) const { return (GetTime() - nTime) >= (EXPIRATION_TIMEOUT + (add_bias ? EXPIRATION_BIAS : 0)); }
bool IsProcessed() const { return fProcessed; }
void SetProcessed() { fProcessed = true; }

Expand Down