77
88use std:: sync:: atomic:: { AtomicU32 , Ordering } ;
99use std:: sync:: Arc ;
10- use std:: time:: Duration ;
1110
1211use lightning_block_sync:: gossip:: GossipVerifier ;
1312
1413use crate :: chain:: ChainSource ;
15- use crate :: config:: RGS_SYNC_TIMEOUT_SECS ;
16- use crate :: logger:: { log_trace, LdkLogger , Logger } ;
14+ use crate :: config:: { RGS_SNAPSHOT_MAX_SIZE , RGS_SYNC_TIMEOUT_SECS } ;
15+ use crate :: logger:: { log_error , log_trace, LdkLogger , Logger } ;
1716use crate :: runtime:: { Runtime , RuntimeSpawner } ;
1817use crate :: types:: { GossipSync , Graph , P2PGossipSync , RapidGossipSync } ;
1918use crate :: Error ;
@@ -70,29 +69,18 @@ impl GossipSource {
7069 let query_timestamp = latest_sync_timestamp. load ( Ordering :: Acquire ) ;
7170 let query_url = format ! ( "{}/{}" , server_url, query_timestamp) ;
7271
73- let response = tokio:: time:: timeout (
74- Duration :: from_secs ( RGS_SYNC_TIMEOUT_SECS ) ,
75- reqwest:: get ( query_url) ,
76- )
77- . await
78- . map_err ( |e| {
79- log_trace ! ( logger, "Retrieving RGS gossip update timed out: {}" , e) ;
72+ let query = bitreq:: get ( query_url)
73+ . with_max_body_size ( Some ( RGS_SNAPSHOT_MAX_SIZE ) )
74+ . with_timeout ( RGS_SYNC_TIMEOUT_SECS ) ;
75+ let response = query. send_async ( ) . await . map_err ( |e| {
76+ log_error ! ( logger, "Failed to retrieve RGS gossip update: {e}" ) ;
8077 Error :: GossipUpdateTimeout
81- } ) ?
82- . map_err ( |e| {
83- log_trace ! ( logger, "Failed to retrieve RGS gossip update: {}" , e) ;
84- Error :: GossipUpdateFailed
8578 } ) ?;
8679
87- match response. error_for_status ( ) {
88- Ok ( res) => {
89- let update_data = res. bytes ( ) . await . map_err ( |e| {
90- log_trace ! ( logger, "Failed to retrieve RGS gossip update: {}" , e) ;
91- Error :: GossipUpdateFailed
92- } ) ?;
93-
80+ match response. status_code {
81+ 200 => {
9482 let new_latest_sync_timestamp =
95- gossip_sync. update_network_graph ( & update_data ) . map_err ( |e| {
83+ gossip_sync. update_network_graph ( response . as_bytes ( ) ) . map_err ( |e| {
9684 log_trace ! (
9785 logger,
9886 "Failed to update network graph with RGS data: {:?}" ,
@@ -103,8 +91,8 @@ impl GossipSource {
10391 latest_sync_timestamp. store ( new_latest_sync_timestamp, Ordering :: Release ) ;
10492 Ok ( new_latest_sync_timestamp)
10593 } ,
106- Err ( e ) => {
107- log_trace ! ( logger, "Failed to retrieve RGS gossip update: {}" , e ) ;
94+ code => {
95+ log_trace ! ( logger, "Failed to retrieve RGS gossip update: HTTP {}" , code ) ;
10896 Err ( Error :: GossipUpdateFailed )
10997 } ,
11098 }
0 commit comments