Skip to content

Commit

Permalink
sim-lib: parse terminal vs temporary lnd keysend errors
Browse files Browse the repository at this point in the history
  • Loading branch information
okjodom committed Oct 2, 2023
1 parent a44a10a commit 4e7b761
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions sim-lib/src/lnd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ use lightning::ln::{PaymentHash, PaymentPreimage};
use tonic_lnd::lnrpc::{payment::PaymentStatus, GetInfoRequest, GetInfoResponse};
use tonic_lnd::lnrpc::{NodeInfoRequest, PaymentFailureReason};
use tonic_lnd::routerrpc::TrackPaymentRequest;
use tonic_lnd::tonic::Code::Unavailable;
use tonic_lnd::tonic::Status;
use tonic_lnd::{routerrpc::SendPaymentRequest, Client};
use triggered::Listener;

Expand Down Expand Up @@ -108,17 +110,11 @@ impl LightningNode for LndNode {
..Default::default()
})
.await
.map_err(|s| {
// TODO: Parse LND rpc status to determine if it's a permanent error or not.
LightningError::PermanentError(format!("{:?}", s))
})?;
.map_err(status_to_lightning_error)?;

let mut stream = response.into_inner();

let payment_hash = match stream.message().await.map_err(|s| {
// TODO: Parse LND rpc status to determine if it's a permanent error or not.
LightningError::PermanentError(format!("{:?}", s))
})? {
let payment_hash = match stream.message().await.map_err(status_to_lightning_error)? {
Some(payment) => string_to_payment_hash(&payment.payment_hash)?,
None => return Err(LightningError::SendPaymentError("No payment".to_string())),
};
Expand Down Expand Up @@ -216,3 +212,12 @@ fn string_to_payment_hash(hash: &str) -> Result<PaymentHash, LightningError> {
.map_err(|_| LightningError::InvalidPaymentHash)?;
Ok(PaymentHash(slice))
}

fn status_to_lightning_error(s: Status) -> LightningError {
let code = s.code();
let message = s.message();
match code {
Unavailable => LightningError::SendPaymentError(format!("Node unavailable: {message}")),
_ => LightningError::PermanentError(message.to_string()),
}
}

0 comments on commit 4e7b761

Please sign in to comment.