@@ -587,9 +587,32 @@ impl SubMan {
587
587
}
588
588
}
589
589
// TODO: handle reconnects
590
- RelayEvent :: Closed => warn ! ( "{} connection closed" , & relay) ,
591
- RelayEvent :: Error ( e) => error ! ( "{}: {}" , & relay, e) ,
592
- RelayEvent :: Other ( msg) => trace ! ( "other event {:?}" , & msg) ,
590
+ RelayEvent :: Closed => warn ! ( "process_relays {}: connection closed" , & relay) ,
591
+ RelayEvent :: Error ( e) => {
592
+ error ! ( "process_relays {} error: {}" , & relay, e) ;
593
+ for ssr in self . remote . values_mut ( ) {
594
+ let mut substate = ssr. borrow_mut ( ) ;
595
+ let remote_id = substate. spec . remote_id . clone ( ) ;
596
+ let filters = substate. spec . filters . clone ( ) ;
597
+ if let Some ( remotesubstate) = & mut substate. remote {
598
+ if let Some ( ref mut rss) = remotesubstate. relays . get_mut ( & relay) {
599
+ debug ! (
600
+ "SubMan handle Error {} {} {:?}: {:?}" ,
601
+ remote_id,
602
+ relay,
603
+ filters
604
+ . iter( )
605
+ . map( |f| f. json( ) . unwrap_or_default( ) )
606
+ . collect:: <Vec <_>>( ) ,
607
+ e
608
+ ) ;
609
+ * * rss = RelaySubState :: Error ( format ! ( "{:?}" , e) ) ;
610
+ }
611
+ }
612
+ }
613
+ }
614
+
615
+ RelayEvent :: Other ( msg) => trace ! ( "process_relays other event {:?}" , & msg) ,
593
616
RelayEvent :: Message ( msg) => {
594
617
self . process_message ( legacy_relay_handler, & relay, & msg) ;
595
618
}
0 commit comments