@@ -396,9 +396,8 @@ impl<N: Network> Service<N> {
396396 }
397397
398398 async fn handle_live ( & mut self ) -> Result < ( ) , BlockRangeScannerError > {
399- let Some ( sender) = self . subscriber . clone ( ) else {
400- return Err ( BlockRangeScannerError :: ServiceShutdown ) ;
401- } ;
399+ let sender =
400+ self . subscriber . clone ( ) . ok_or_else ( || BlockRangeScannerError :: ServiceShutdown ) ?;
402401
403402 let block_confirmations = self . config . block_confirmations ;
404403 let provider = self . provider . clone ( ) ;
@@ -421,17 +420,19 @@ impl<N: Network> Service<N> {
421420 start_height : BlockNumberOrTag ,
422421 end_height : BlockNumberOrTag ,
423422 ) -> Result < ( ) , BlockRangeScannerError > {
424- let ( start_block, end_block) = tokio:: join !(
423+ let ( start_block, end_block) = tokio:: try_join !(
425424 self . provider. get_block_by_number( start_height) ,
426425 self . provider. get_block_by_number( end_height)
427- ) ;
426+ ) ? ;
428427
429- let start_block_num = start_block?
430- . ok_or ( BlockRangeScannerError :: BlockNotFound ( start_height) ) ?
428+ let start_block_num = start_block
429+ . ok_or_else ( || BlockRangeScannerError :: BlockNotFound ( start_height) ) ?
430+ . header ( )
431+ . number ( ) ;
432+ let end_block_num = end_block
433+ . ok_or_else ( || BlockRangeScannerError :: BlockNotFound ( end_height) ) ?
431434 . header ( )
432435 . number ( ) ;
433- let end_block_num =
434- end_block?. ok_or ( BlockRangeScannerError :: BlockNotFound ( end_height) ) ?. header ( ) . number ( ) ;
435436
436437 if end_block_num < start_block_num {
437438 return Err ( BlockRangeScannerError :: HistoricalSyncError ( format ! (
@@ -457,17 +458,17 @@ impl<N: Network> Service<N> {
457458 let block_confirmations = self . config . block_confirmations ;
458459 // Step 1:
459460 // Fetches the starting block and end block for historical sync in parallel
460- let ( start_block, latest_block) = tokio:: join !(
461+ let ( start_block, latest_block) = tokio:: try_join !(
461462 self . provider. get_block_by_number( start_height) ,
462463 self . provider. get_block_by_number( BlockNumberOrTag :: Latest )
463- ) ;
464+ ) ? ;
464465
465- let start_block_num = start_block?
466- . ok_or ( BlockRangeScannerError :: BlockNotFound ( start_height) ) ?
466+ let start_block_num = start_block
467+ . ok_or_else ( || BlockRangeScannerError :: BlockNotFound ( start_height) ) ?
467468 . header ( )
468469 . number ( ) ;
469- let latest_block = latest_block?
470- . ok_or ( BlockRangeScannerError :: BlockNotFound ( BlockNumberOrTag :: Latest ) ) ?
470+ let latest_block = latest_block
471+ . ok_or_else ( || BlockRangeScannerError :: BlockNotFound ( BlockNumberOrTag :: Latest ) ) ?
471472 . header ( )
472473 . number ( ) ;
473474
@@ -481,9 +482,8 @@ impl<N: Network> Service<N> {
481482 "Start block is beyond confirmed tip, starting live stream"
482483 ) ;
483484
484- let Some ( sender) = self . subscriber . clone ( ) else {
485- return Err ( BlockRangeScannerError :: ServiceShutdown ) ;
486- } ;
485+ let sender =
486+ self . subscriber . clone ( ) . ok_or_else ( || BlockRangeScannerError :: ServiceShutdown ) ?;
487487
488488 let provider = self . provider . clone ( ) ;
489489 tokio:: spawn ( async move {
@@ -533,9 +533,9 @@ impl<N: Network> Service<N> {
533533
534534 self . send_to_subscriber ( ScannerMessage :: Status ( ScannerStatus :: ChainTipReached ) ) . await ;
535535
536- let Some ( sender) = self . subscriber . clone ( ) else {
537- return Err ( BlockRangeScannerError :: ServiceShutdown ) ;
538- } ;
536+ let sender =
537+ self . subscriber . clone ( ) . ok_or_else ( || BlockRangeScannerError :: ServiceShutdown ) ? ;
538+
539539 // Step 5:
540540 // Spawn the buffer processor task
541541 // This will:
0 commit comments