@@ -207,57 +207,68 @@ impl ChainSource {
207207 ) {
208208 match self {
209209 Self :: Esplora { sync_config, logger, .. } => {
210- // Setup syncing intervals
211- let onchain_wallet_sync_interval_secs = sync_config
212- . onchain_wallet_sync_interval_secs
213- . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
214- let mut onchain_wallet_sync_interval =
215- tokio:: time:: interval ( Duration :: from_secs ( onchain_wallet_sync_interval_secs) ) ;
216- onchain_wallet_sync_interval
217- . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
218-
219- let fee_rate_cache_update_interval_secs = sync_config
220- . fee_rate_cache_update_interval_secs
221- . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
222- let mut fee_rate_update_interval =
223- tokio:: time:: interval ( Duration :: from_secs ( fee_rate_cache_update_interval_secs) ) ;
224- // When starting up, we just blocked on updating, so skip the first tick.
225- fee_rate_update_interval. reset ( ) ;
226- fee_rate_update_interval
227- . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
228-
229- let lightning_wallet_sync_interval_secs = sync_config
230- . lightning_wallet_sync_interval_secs
231- . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
232- let mut lightning_wallet_sync_interval =
233- tokio:: time:: interval ( Duration :: from_secs ( lightning_wallet_sync_interval_secs) ) ;
234- lightning_wallet_sync_interval
235- . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
210+ // Setup syncing intervals if enabled
211+ if let Some ( background_sync_config) = sync_config. background_sync_config {
212+ let onchain_wallet_sync_interval_secs = background_sync_config
213+ . onchain_wallet_sync_interval_secs
214+ . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
215+ let mut onchain_wallet_sync_interval = tokio:: time:: interval (
216+ Duration :: from_secs ( onchain_wallet_sync_interval_secs) ,
217+ ) ;
218+ onchain_wallet_sync_interval
219+ . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
220+
221+ let fee_rate_cache_update_interval_secs = background_sync_config
222+ . fee_rate_cache_update_interval_secs
223+ . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
224+ let mut fee_rate_update_interval = tokio:: time:: interval ( Duration :: from_secs (
225+ fee_rate_cache_update_interval_secs,
226+ ) ) ;
227+ // When starting up, we just blocked on updating, so skip the first tick.
228+ fee_rate_update_interval. reset ( ) ;
229+ fee_rate_update_interval
230+ . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
231+
232+ let lightning_wallet_sync_interval_secs = background_sync_config
233+ . lightning_wallet_sync_interval_secs
234+ . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
235+ let mut lightning_wallet_sync_interval = tokio:: time:: interval (
236+ Duration :: from_secs ( lightning_wallet_sync_interval_secs) ,
237+ ) ;
238+ lightning_wallet_sync_interval
239+ . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
236240
237- // Start the syncing loop.
238- loop {
239- tokio:: select! {
240- _ = stop_sync_receiver. changed( ) => {
241- log_trace!(
242- logger,
243- "Stopping background syncing on-chain wallet." ,
244- ) ;
245- return ;
246- }
247- _ = onchain_wallet_sync_interval. tick( ) => {
248- let _ = self . sync_onchain_wallet( ) . await ;
249- }
250- _ = fee_rate_update_interval. tick( ) => {
251- let _ = self . update_fee_rate_estimates( ) . await ;
252- }
253- _ = lightning_wallet_sync_interval. tick( ) => {
254- let _ = self . sync_lightning_wallet(
255- Arc :: clone( & channel_manager) ,
256- Arc :: clone( & chain_monitor) ,
257- Arc :: clone( & output_sweeper) ,
258- ) . await ;
241+ // Start the syncing loop.
242+ loop {
243+ tokio:: select! {
244+ _ = stop_sync_receiver. changed( ) => {
245+ log_trace!(
246+ logger,
247+ "Stopping background syncing on-chain wallet." ,
248+ ) ;
249+ return ;
250+ }
251+ _ = onchain_wallet_sync_interval. tick( ) => {
252+ let _ = self . sync_onchain_wallet( ) . await ;
253+ }
254+ _ = fee_rate_update_interval. tick( ) => {
255+ let _ = self . update_fee_rate_estimates( ) . await ;
256+ }
257+ _ = lightning_wallet_sync_interval. tick( ) => {
258+ let _ = self . sync_lightning_wallet(
259+ Arc :: clone( & channel_manager) ,
260+ Arc :: clone( & chain_monitor) ,
261+ Arc :: clone( & output_sweeper) ,
262+ ) . await ;
263+ }
259264 }
260265 }
266+ } else {
267+ // Background syncing is disabled
268+ log_info ! (
269+ logger, "Background syncing disabled. Manual syncing required for onchain wallet, lightning wallet, and fee rate updates." ,
270+ ) ;
271+ return ;
261272 }
262273 } ,
263274 Self :: BitcoindRpc {
0 commit comments