Bump lwsf to da8e261: fix wallets bricked past 2048 transactions#6
Open
peachbits wants to merge 1 commit into
Open
Bump lwsf to da8e261: fix wallets bricked past 2048 transactions#6peachbits wants to merge 1 commit into
peachbits wants to merge 1 commit into
Conversation
The previous pin (cedb2164, Nov 2025) parses get_address_txs with wire::max_element_count<config::max_txes_in_rpc> = 2048. Any wallet whose transaction list exceeds that (candidate-spend entries grow monotonically with wallet age) fails the parse on every refresh, resets passed_login, and re-logins every 30s forever: the sync circle never progresses while the server stays perfectly healthy. Verified against production and reproduced deterministically at the 2048/2049 boundary with the node addon harness (~/git/projects/monero-sync-tool/lwsf-2048-repro). Upstream da8e261 (Dec 2025) replaces the count cap with a min_element_size byte guard. The five commits absorbed alongside it: SSL CA support, rpc timeout adjustments, http path prefixing, a connect-status fix, and a subaddr lookahead update. Patch changes: re-anchored the invoke_payload replace onto the new upstream text (prefix parameter + explicit connect); the Nym branch now runs before the socket connect so Nym wallets never open a direct TCP connection; the build now fails loudly if the patch anchors stop matching instead of silently shipping an unpatched client.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Description
Bumps the lwsf pin from
cedb2164(Nov 7, 2025) toda8e2617(Dec 13, 2025) to fix XMR wallets permanently stuck at "synchronizing" with no progress.Root cause
The old pin parses
get_address_txswithwire::max_element_count<config::max_txes_in_rpc>= 2048. Any wallet whose transaction list exceeds that throws during response parsing on every refresh pass, which resetspassed_loginand restarts the loop:login → get_subaddrs → get_address_txs → parse throw, every ~30 s, forever. The server is healthy the whole time (HTTP 200s), so nothing shows up server-side except the login churn.Because the tx list includes candidate spends (every ring-decoy reference to the wallet's outputs), it grows monotonically with wallet age — every long-lived wallet eventually crosses 2048 and bricks. Two production support cases confirmed (one wallet at 2,514 txs / 1.4 MB response).
Upstream
da8e261("Update get_address_txs tx array constraint") replaces the count cap with amin_element_sizebyte guard.What's absorbed with the bump (cedb2164..da8e2617)
config::connect_timeout)invoke_payloadgains aprefixparam)Deliberately not HEAD: this avoids the later websocket/boost-beast transition and the newer-monero requirements ("blackball" removal), keeping the hotfix surface minimal. The monero pin is unchanged.
Build-patch changes (
scripts/libraries/lwsf.ts)invoke_payloadapi_key/Nym patch onto the new upstream text.Verification
verify-repopasses (install, prepare, eslint on changed files).matthew/node-build-target):get_unspent_outs, synced height 0