Skip to content

Commit 5420711

Browse files
committed
f spawn, not block_on
1 parent 521564d commit 5420711

File tree

1 file changed

+20
-25
lines changed

1 file changed

+20
-25
lines changed

src/access.rs

+20-25
Original file line numberDiff line numberDiff line change
@@ -411,34 +411,29 @@ where
411411
let tx_index = scid_utils::tx_index_from_scid(&short_channel_id);
412412
let vout = scid_utils::vout_from_scid(&short_channel_id);
413413

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);
429415

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);
435417

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+
}
440432
}
441-
})
433+
let _ = sender.send(Err(AccessError::UnknownTx));
434+
});
435+
436+
receiver.recv().map_err(|_| AccessError::UnknownTx)?
442437
}
443438
}
444439

0 commit comments

Comments
 (0)