@@ -281,48 +281,49 @@ impl ChainSource {
281
281
}
282
282
}
283
283
284
- let channel_manager_best_block_hash =
285
- channel_manager. current_best_block ( ) . block_hash ;
286
- let sweeper_best_block_hash = output_sweeper. current_best_block ( ) . block_hash ;
287
- let onchain_wallet_best_block_hash = onchain_wallet. current_best_block ( ) . block_hash ;
288
-
289
- let mut chain_listeners = vec ! [
290
- (
291
- onchain_wallet_best_block_hash,
292
- & * * onchain_wallet as & ( dyn Listen + Send + Sync ) ,
293
- ) ,
294
- (
295
- channel_manager_best_block_hash,
296
- & * channel_manager as & ( dyn Listen + Send + Sync ) ,
297
- ) ,
298
- ( sweeper_best_block_hash, & * output_sweeper as & ( dyn Listen + Send + Sync ) ) ,
299
- ] ;
300
-
301
- // TODO: Eventually we might want to see if we can synchronize `ChannelMonitor`s
302
- // before giving them to `ChainMonitor` it the first place. However, this isn't
303
- // trivial as we load them on initialization (in the `Builder`) and only gain
304
- // network access during `start`. For now, we just make sure we get the worst known
305
- // block hash and sychronize them via `ChainMonitor`.
306
- if let Some ( worst_channel_monitor_block_hash) = chain_monitor
307
- . list_monitors ( )
308
- . iter ( )
309
- . flat_map ( |( txo, _) | chain_monitor. get_monitor ( * txo) )
310
- . map ( |m| m. current_best_block ( ) )
311
- . min_by_key ( |b| b. height )
312
- . map ( |b| b. block_hash )
313
- {
314
- chain_listeners. push ( (
315
- worst_channel_monitor_block_hash,
316
- & * chain_monitor as & ( dyn Listen + Send + Sync ) ,
317
- ) ) ;
318
- }
319
-
320
284
log_info ! (
321
285
logger,
322
286
"Starting initial synchronization of chain listeners. This might take a while.." ,
323
287
) ;
324
288
325
289
loop {
290
+ let channel_manager_best_block_hash =
291
+ channel_manager. current_best_block ( ) . block_hash ;
292
+ let sweeper_best_block_hash = output_sweeper. current_best_block ( ) . block_hash ;
293
+ let onchain_wallet_best_block_hash =
294
+ onchain_wallet. current_best_block ( ) . block_hash ;
295
+
296
+ let mut chain_listeners = vec ! [
297
+ (
298
+ onchain_wallet_best_block_hash,
299
+ & * * onchain_wallet as & ( dyn Listen + Send + Sync ) ,
300
+ ) ,
301
+ (
302
+ channel_manager_best_block_hash,
303
+ & * channel_manager as & ( dyn Listen + Send + Sync ) ,
304
+ ) ,
305
+ ( sweeper_best_block_hash, & * output_sweeper as & ( dyn Listen + Send + Sync ) ) ,
306
+ ] ;
307
+
308
+ // TODO: Eventually we might want to see if we can synchronize `ChannelMonitor`s
309
+ // before giving them to `ChainMonitor` it the first place. However, this isn't
310
+ // trivial as we load them on initialization (in the `Builder`) and only gain
311
+ // network access during `start`. For now, we just make sure we get the worst known
312
+ // block hash and sychronize them via `ChainMonitor`.
313
+ if let Some ( worst_channel_monitor_block_hash) = chain_monitor
314
+ . list_monitors ( )
315
+ . iter ( )
316
+ . flat_map ( |( txo, _) | chain_monitor. get_monitor ( * txo) )
317
+ . map ( |m| m. current_best_block ( ) )
318
+ . min_by_key ( |b| b. height )
319
+ . map ( |b| b. block_hash )
320
+ {
321
+ chain_listeners. push ( (
322
+ worst_channel_monitor_block_hash,
323
+ & * chain_monitor as & ( dyn Listen + Send + Sync ) ,
324
+ ) ) ;
325
+ }
326
+
326
327
let mut locked_header_cache = header_cache. lock ( ) . await ;
327
328
let now = SystemTime :: now ( ) ;
328
329
match synchronize_listeners (
0 commit comments