fix(net): bound QGETDATA request tracking - #7519
Merged
Merged
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue being fixed or feature implemented
Inbound QGETDATA registration happened before validation, and each fresh
quorumHashproduced a distinct map key. Entries remained for the expiry window while cleanup depended on block-tip callbacks that are skipped during IBD and while unsynced, allowing an MNAuth peer or unauthenticated qwatch peer to grow request tracking without a hard bound.This PR is now the request-tracking half of the original combined change. Requester-supplied response-error validation was split into #7605 so the two defects can be reviewed and merged independently.
What was done?
QUORUM_TYPE_INVALID, score 100, and are not tracked;QUORUM_BLOCK_NOT_FOUNDunscored and are not tracked;Unauthenticated qwatch peers continue to share the null identity used by the existing per-key limiter. Exhaustion of that shared 64-entry budget is therefore unscored; the independent 4096-entry global cap remains the hard memory bound.
How Has This Been Tested?
make -j13build on macOS arm64 using the prebuilt depends tree../src/test/test_dash --run_test=llmq_qgetdata_tests./src/test/test_dash --run_test='llmq_*'(75 cases)/opt/homebrew/bin/python3.9 test/functional/test_runner.py p2p_quorum_data.pytest/lint/all-lint.pygit diff --checkThe Python lint subcheck skipped because
flake8is not installed; the remaining lint checks passed.Breaking Changes
None.
Checklist:
This pull request was created by Codex.