upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/sync/mod.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2025-12-19 13:56:25 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2025-12-19 13:56:25 +0000
commit565715adf14cafd0f0155d553f583581334a8dac (patch)
tree8f692254da5fd91a8944acf4d815602672dd0ef4 /src/sync/mod.rs
parentf41bd47bf95dabfa3d0e6cb110e751e7cd43f138 (diff)
sync: fix autoclose on EOSE for historic filters
Diffstat (limited to 'src/sync/mod.rs')
-rw-r--r--src/sync/mod.rs20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/sync/mod.rs b/src/sync/mod.rs
index 3f8e503..88608b1 100644
--- a/src/sync/mod.rs
+++ b/src/sync/mod.rs
@@ -1614,15 +1614,7 @@ impl SyncManager {
1614 let since = Timestamp::from(now.as_secs().saturating_sub(QUICK_RECONNECT_WINDOW_SECS)); 1614 let since = Timestamp::from(now.as_secs().saturating_sub(QUICK_RECONNECT_WINDOW_SECS));
1615 1615
1616 // Re-subscribe to Layer 1 with since filter 1616 // Re-subscribe to Layer 1 with since filter
1617 let layer1_filter = filters::build_announcement_filter(Some(since)); 1617 self.sync_generic_filters(relay_url, Some(since)).await;
1618 if let Err(e) = connection.subscribe_filter(layer1_filter).await {
1619 tracing::error!(
1620 relay = %relay_url,
1621 error = %e,
1622 "Failed to re-subscribe to Layer 1 during consolidation"
1623 );
1624 }
1625
1626 // Rebuild Layer 2 and Layer 3 with since filter 1618 // Rebuild Layer 2 and Layer 3 with since filter
1627 self.rebuild_layer2_and_layer3(relay_url, Some(since)).await; 1619 self.rebuild_layer2_and_layer3(relay_url, Some(since)).await;
1628 1620
@@ -1817,7 +1809,11 @@ impl SyncManager {
1817 1809
1818 for filter in filters.iter() { 1810 for filter in filters.iter() {
1819 // Filters should already NOT have a limit set (live subscription = limit 1 instead of 0 as we dont know whether some relays would treat this as no limit) 1811 // Filters should already NOT have a limit set (live subscription = limit 1 instead of 0 as we dont know whether some relays would treat this as no limit)
1820 match connection.subscribe_filter(filter.clone().limit(1)).await { 1812 // Live subscriptions do NOT auto-close - we want them to stay open for new events
1813 match connection
1814 .subscribe_filter(filter.clone().limit(1), false)
1815 .await
1816 {
1821 Ok(sub_id) => { 1817 Ok(sub_id) => {
1822 sub_ids.push(sub_id); 1818 sub_ids.push(sub_id);
1823 } 1819 }
@@ -2045,7 +2041,7 @@ impl SyncManager {
2045 let mut subscription_ids = HashSet::new(); 2041 let mut subscription_ids = HashSet::new();
2046 for (idx, filter) in ids_filters.iter().enumerate() { 2042 for (idx, filter) in ids_filters.iter().enumerate() {
2047 if let Some(conn) = self.connections.get(relay_url) { 2043 if let Some(conn) = self.connections.get(relay_url) {
2048 match conn.subscribe_filter(filter.clone()).await { 2044 match conn.subscribe_filter(filter.clone(), true).await {
2049 Ok(sub_id) => { 2045 Ok(sub_id) => {
2050 subscription_ids.insert(sub_id); 2046 subscription_ids.insert(sub_id);
2051 } 2047 }
@@ -2102,7 +2098,7 @@ impl SyncManager {
2102 ); 2098 );
2103 2099
2104 if let Some(conn) = self.connections.get(relay_url) { 2100 if let Some(conn) = self.connections.get(relay_url) {
2105 match conn.subscribe_filter(filter.clone()).await { 2101 match conn.subscribe_filter(filter.clone(), true).await {
2106 Ok(sub_id) => { 2102 Ok(sub_id) => {
2107 subscription_ids.insert(sub_id); 2103 subscription_ids.insert(sub_id);
2108 } 2104 }