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:
Diffstat (limited to 'src/sync/mod.rs')
-rw-r--r--src/sync/mod.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/sync/mod.rs b/src/sync/mod.rs
index c62b478..15c89e3 100644
--- a/src/sync/mod.rs
+++ b/src/sync/mod.rs
@@ -1251,6 +1251,9 @@ impl SyncManager {
1251 let metrics_clone = self.metrics.clone(); // Clone metrics for the spawned task 1251 let metrics_clone = self.metrics.clone(); // Clone metrics for the spawned task
1252 let is_bootstrap_clone = is_bootstrap; // Clone is_bootstrap for the spawned task 1252 let is_bootstrap_clone = is_bootstrap; // Clone is_bootstrap for the spawned task
1253 tokio::spawn(async move { 1253 tokio::spawn(async move {
1254 // Track whether we've already sent a disconnect notification
1255 let mut disconnect_sent = false;
1256
1254 while let Some(relay_event) = event_rx.recv().await { 1257 while let Some(relay_event) = event_rx.recv().await {
1255 match relay_event { 1258 match relay_event {
1256 RelayEvent::Event(event) => { 1259 RelayEvent::Event(event) => {
@@ -1297,6 +1300,7 @@ impl SyncManager {
1297 relay_url: relay_url_clone.clone(), 1300 relay_url: relay_url_clone.clone(),
1298 }) 1301 })
1299 .await; 1302 .await;
1303 disconnect_sent = true;
1300 break; 1304 break;
1301 } 1305 }
1302 RelayEvent::Shutdown => { 1306 RelayEvent::Shutdown => {
@@ -1307,10 +1311,25 @@ impl SyncManager {
1307 relay_url: relay_url_clone.clone(), 1311 relay_url: relay_url_clone.clone(),
1308 }) 1312 })
1309 .await; 1313 .await;
1314 disconnect_sent = true;
1310 break; 1315 break;
1311 } 1316 }
1312 } 1317 }
1313 } 1318 }
1319
1320 // If the event channel closed without a Closed/Shutdown event
1321 // (e.g., connection dropped unexpectedly), still notify SyncManager
1322 if !disconnect_sent {
1323 tracing::info!(
1324 relay = %relay_url_clone,
1325 "Event channel closed, notifying SyncManager of disconnect"
1326 );
1327 let _ = disconnect_tx
1328 .send(DisconnectNotification {
1329 relay_url: relay_url_clone.clone(),
1330 })
1331 .await;
1332 }
1314 }); 1333 });
1315 1334
1316 tracing::info!( 1335 tracing::info!(