@@ -411,34 +411,29 @@ where
411
411
let tx_index = scid_utils:: tx_index_from_scid ( & short_channel_id) ;
412
412
let vout = scid_utils:: vout_from_scid ( & short_channel_id) ;
413
413
414
- let client_tokio = Arc :: clone ( & self . client ) ;
415
- locked_runtime. as_ref ( ) . unwrap ( ) . block_on ( async move {
416
- // TODO: migrate to https://github.com/bitcoindevkit/rust-esplora-client/pull/13 with
417
- // next release.
418
- let block_hash = client_tokio
419
- . get_header ( block_height. into ( ) )
420
- . await
421
- . map_err ( |_| AccessError :: UnknownTx ) ?
422
- . block_hash ( ) ;
423
-
424
- let txid = client_tokio
425
- . get_txid_at_block_index ( & block_hash, tx_index as usize )
426
- . await
427
- . map_err ( |_| AccessError :: UnknownTx ) ?
428
- . ok_or ( AccessError :: UnknownTx ) ?;
414
+ let client = Arc :: clone ( & self . client ) ;
429
415
430
- let tx = client_tokio
431
- . get_tx ( & txid)
432
- . await
433
- . map_err ( |_| AccessError :: UnknownTx ) ?
434
- . ok_or ( AccessError :: UnknownTx ) ?;
416
+ let ( sender, receiver) = mpsc:: sync_channel ( 1 ) ;
435
417
436
- if let Some ( tx_out) = tx. output . get ( vout as usize ) {
437
- return Ok ( tx_out. clone ( ) ) ;
438
- } else {
439
- Err ( AccessError :: UnknownTx )
418
+ locked_runtime. as_ref ( ) . unwrap ( ) . spawn ( async move {
419
+ // TODO: migrate to https://github.com/bitcoindevkit/rust-esplora-client/pull/13 with
420
+ // next release.
421
+ if let Ok ( block_header) = client. get_header ( block_height. into ( ) ) . await {
422
+ let block_hash = block_header. block_hash ( ) ;
423
+ if let Ok ( Some ( txid) ) =
424
+ client. get_txid_at_block_index ( & block_hash, tx_index as usize ) . await
425
+ {
426
+ if let Ok ( Some ( tx) ) = client. get_tx ( & txid) . await {
427
+ if let Some ( tx_out) = tx. output . get ( vout as usize ) {
428
+ let _ = sender. send ( Ok ( tx_out. clone ( ) ) ) ;
429
+ }
430
+ }
431
+ }
440
432
}
441
- } )
433
+ let _ = sender. send ( Err ( AccessError :: UnknownTx ) ) ;
434
+ } ) ;
435
+
436
+ receiver. recv ( ) . map_err ( |_| AccessError :: UnknownTx ) ?
442
437
}
443
438
}
444
439
0 commit comments