diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2026-02-18 17:12:04 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2026-02-18 17:12:04 +0000 |
| commit | 806936e7d1aab5dfd0c2ad6b98a115122dc1785c (patch) | |
| tree | 38e9ebaacbf03d519c4713b1c961fa8708e2b8a6 /docs | |
| parent | c7a3eaf2898236b85790dd34213facbbdc9900d9 (diff) | |
fix: use sync-level-aware filters in negentropy fallback to prevent premature PR event delivery
StateOnly repos in a pending batch had their repo IDs included in the
negentropy REQ+EOSE fallback, which called build_layer2_and_layer3_filters.
This generated #a/#A/#q tag filters for repos whose announcements were
still in purgatory (not yet promoted to the database).
When the remote relay responded with PR events matching those filters,
the write policy correctly rejected them as 'orphan' (no accepted repo
in DB yet). However, nostr-sdk's client-level deduplication then silently
dropped the same event on all subsequent deliveries, making it permanently
unavailable even after the announcement was promoted.
Fix: split batch_repos into full vs state-only by consulting repo_sync_index
at fallback time, then call build_sync_level_aware_filters which only
generates #a/#A/#q filters for Full repos. StateOnly repos only get
the kind 30618 + #d filter they were originally subscribed with.
Diffstat (limited to 'docs')
0 files changed, 0 insertions, 0 deletions