projects
/
rust-lightning
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #2219 from benthecarman/custom-closing-address
[rust-lightning]
/
lightning
/
src
/
ln
/
outbound_payment.rs
diff --git
a/lightning/src/ln/outbound_payment.rs
b/lightning/src/ln/outbound_payment.rs
index 636bc13a90b7adbe64facaadb253b7a4cfdf1c7e..5270ed35d8835d6f240e8ae0fcd90b12e0851685 100644
(file)
--- a/
lightning/src/ln/outbound_payment.rs
+++ b/
lightning/src/ln/outbound_payment.rs
@@
-719,7
+719,7
@@
impl OutboundPayments {
};
for path in route.paths.iter() {
if path.hops.len() == 0 {
};
for path in route.paths.iter() {
if path.hops.len() == 0 {
- log_error!(logger, "
length-0 path in route
");
+ log_error!(logger, "
Unusable path in route (path.hops.len() must be at least 1
");
self.abandon_payment(payment_id, PaymentFailureReason::UnexpectedError, pending_events);
return
}
self.abandon_payment(payment_id, PaymentFailureReason::UnexpectedError, pending_events);
return
}
@@
-895,7
+895,7
@@
impl OutboundPayments {
let payment_hash = probing_cookie_from_id(&payment_id, probing_cookie_secret);
let payment_hash = probing_cookie_from_id(&payment_id, probing_cookie_secret);
- if path.hops.len() < 2 {
+ if path.hops.len() < 2
&& path.blinded_tail.is_none()
{
return Err(PaymentSendFailure::ParameterError(APIError::APIMisuseError {
err: "No need probing a path with less than two hops".to_string()
}))
return Err(PaymentSendFailure::ParameterError(APIError::APIMisuseError {
err: "No need probing a path with less than two hops".to_string()
}))
@@
-1004,8
+1004,10
@@
impl OutboundPayments {
path_errs.push(Err(APIError::InvalidRoute{err: "Sending to blinded paths isn't supported yet".to_owned()}));
continue 'path_check;
}
path_errs.push(Err(APIError::InvalidRoute{err: "Sending to blinded paths isn't supported yet".to_owned()}));
continue 'path_check;
}
+ let dest_hop_idx = if path.blinded_tail.is_some() && path.blinded_tail.as_ref().unwrap().hops.len() > 1 {
+ usize::max_value() } else { path.hops.len() - 1 };
for (idx, hop) in path.hops.iter().enumerate() {
for (idx, hop) in path.hops.iter().enumerate() {
- if idx !=
path.hops.len() - 1
&& hop.pubkey == our_node_id {
+ if idx !=
dest_hop_idx
&& hop.pubkey == our_node_id {
path_errs.push(Err(APIError::InvalidRoute{err: "Path went through us but wasn't a simple rebalance loop to us".to_owned()}));
continue 'path_check;
}
path_errs.push(Err(APIError::InvalidRoute{err: "Path went through us but wasn't a simple rebalance loop to us".to_owned()}));
continue 'path_check;
}