1+ use crate :: config:: RGS_SYNC_TIMEOUT_SECS ;
12use crate :: logger:: { log_trace, FilesystemLogger , Logger } ;
23use crate :: types:: { GossipSync , NetworkGraph , P2PGossipSync , RapidGossipSync } ;
34use crate :: Error ;
@@ -6,6 +7,7 @@ use lightning::routing::utxo::UtxoLookup;
67
78use std:: sync:: atomic:: { AtomicU32 , Ordering } ;
89use std:: sync:: Arc ;
10+ use std:: time:: Duration ;
911
1012pub ( crate ) enum GossipSource {
1113 P2PNetwork {
@@ -55,7 +57,17 @@ impl GossipSource {
5557 Self :: RapidGossipSync { gossip_sync, server_url, latest_sync_timestamp, logger } => {
5658 let query_timestamp = latest_sync_timestamp. load ( Ordering :: Acquire ) ;
5759 let query_url = format ! ( "{}/{}" , server_url, query_timestamp) ;
58- let response = reqwest:: get ( query_url) . await . map_err ( |e| {
60+
61+ let response = tokio:: time:: timeout (
62+ Duration :: from_secs ( RGS_SYNC_TIMEOUT_SECS ) ,
63+ reqwest:: get ( query_url) ,
64+ )
65+ . await
66+ . map_err ( |e| {
67+ log_trace ! ( logger, "Retrieving RGS gossip update timed out: {}" , e) ;
68+ Error :: GossipUpdateTimeout
69+ } ) ?
70+ . map_err ( |e| {
5971 log_trace ! ( logger, "Failed to retrieve RGS gossip update: {}" , e) ;
6072 Error :: GossipUpdateFailed
6173 } ) ?;
0 commit comments