Skip to content

Commit

Permalink
f spawn, not block_on
Browse files Browse the repository at this point in the history
  • Loading branch information
tnull committed Oct 21, 2022
1 parent 521564d commit 5420711
Showing 1 changed file with 20 additions and 25 deletions.
45 changes: 20 additions & 25 deletions src/access.rs
Original file line number Diff line number Diff line change
Expand Up @@ -411,34 +411,29 @@ where
let tx_index = scid_utils::tx_index_from_scid(&short_channel_id);
let vout = scid_utils::vout_from_scid(&short_channel_id);

let client_tokio = Arc::clone(&self.client);
locked_runtime.as_ref().unwrap().block_on(async move {
// TODO: migrate to https://github.com/bitcoindevkit/rust-esplora-client/pull/13 with
// next release.
let block_hash = client_tokio
.get_header(block_height.into())
.await
.map_err(|_| AccessError::UnknownTx)?
.block_hash();

let txid = client_tokio
.get_txid_at_block_index(&block_hash, tx_index as usize)
.await
.map_err(|_| AccessError::UnknownTx)?
.ok_or(AccessError::UnknownTx)?;
let client = Arc::clone(&self.client);

let tx = client_tokio
.get_tx(&txid)
.await
.map_err(|_| AccessError::UnknownTx)?
.ok_or(AccessError::UnknownTx)?;
let (sender, receiver) = mpsc::sync_channel(1);

if let Some(tx_out) = tx.output.get(vout as usize) {
return Ok(tx_out.clone());
} else {
Err(AccessError::UnknownTx)
locked_runtime.as_ref().unwrap().spawn(async move {
// TODO: migrate to https://github.com/bitcoindevkit/rust-esplora-client/pull/13 with
// next release.
if let Ok(block_header) = client.get_header(block_height.into()).await {
let block_hash = block_header.block_hash();
if let Ok(Some(txid)) =
client.get_txid_at_block_index(&block_hash, tx_index as usize).await
{
if let Ok(Some(tx)) = client.get_tx(&txid).await {
if let Some(tx_out) = tx.output.get(vout as usize) {
let _ = sender.send(Ok(tx_out.clone()));
}
}
}
}
})
let _ = sender.send(Err(AccessError::UnknownTx));
});

receiver.recv().map_err(|_| AccessError::UnknownTx)?
}
}

Expand Down

0 comments on commit 5420711

Please sign in to comment.