@@ -389,7 +389,7 @@ where
389
389
return ;
390
390
}
391
391
392
- let spending_tx_opt;
392
+ let mut spending_tx_opt;
393
393
{
394
394
let mut state_lock = self . sweeper_state . lock ( ) . unwrap ( ) ;
395
395
for descriptor in relevant_descriptors {
@@ -413,6 +413,8 @@ where
413
413
spending_tx_opt = self . regenerate_spend_if_necessary ( & mut * state_lock) ;
414
414
self . persist_state ( & * state_lock) . unwrap_or_else ( |e| {
415
415
log_error ! ( self . logger, "Error persisting OutputSweeper: {:?}" , e) ;
416
+ // Skip broadcasting if the persist failed.
417
+ spending_tx_opt = None ;
416
418
} ) ;
417
419
}
418
420
@@ -585,7 +587,7 @@ where
585
587
fn filtered_block_connected (
586
588
& self , header : & Header , txdata : & chain:: transaction:: TransactionData , height : u32 ,
587
589
) {
588
- let spending_tx_opt;
590
+ let mut spending_tx_opt;
589
591
{
590
592
let mut state_lock = self . sweeper_state . lock ( ) . unwrap ( ) ;
591
593
assert_eq ! ( state_lock. best_block. block_hash, header. prev_blockhash,
@@ -598,6 +600,8 @@ where
598
600
599
601
self . persist_state ( & * state_lock) . unwrap_or_else ( |e| {
600
602
log_error ! ( self . logger, "Error persisting OutputSweeper: {:?}" , e) ;
603
+ // Skip broadcasting if the persist failed.
604
+ spending_tx_opt = None ;
601
605
} ) ;
602
606
}
603
607
@@ -677,12 +681,14 @@ where
677
681
}
678
682
679
683
fn best_block_updated ( & self , header : & Header , height : u32 ) {
680
- let spending_tx_opt;
684
+ let mut spending_tx_opt;
681
685
{
682
686
let mut state_lock = self . sweeper_state . lock ( ) . unwrap ( ) ;
683
687
spending_tx_opt = self . best_block_updated_internal ( & mut * state_lock, header, height) ;
684
688
self . persist_state ( & * state_lock) . unwrap_or_else ( |e| {
685
689
log_error ! ( self . logger, "Error persisting OutputSweeper: {:?}" , e) ;
690
+ // Skip broadcasting if the persist failed.
691
+ spending_tx_opt = None ;
686
692
} ) ;
687
693
}
688
694
0 commit comments