@@ -719,7 +719,7 @@ impl OutboundPayments {
719
719
} ;
720
720
for path in route. paths . iter ( ) {
721
721
if path. hops . len ( ) == 0 {
722
- log_error ! ( logger, "length-0 path in route" ) ;
722
+ log_error ! ( logger, "Unusable path in route (path.hops.len() must be at least 1 " ) ;
723
723
self . abandon_payment ( payment_id, PaymentFailureReason :: UnexpectedError , pending_events) ;
724
724
return
725
725
}
@@ -895,7 +895,7 @@ impl OutboundPayments {
895
895
896
896
let payment_hash = probing_cookie_from_id ( & payment_id, probing_cookie_secret) ;
897
897
898
- if path. hops . len ( ) < 2 {
898
+ if path. hops . len ( ) < 2 && path . blinded_tail . is_none ( ) {
899
899
return Err ( PaymentSendFailure :: ParameterError ( APIError :: APIMisuseError {
900
900
err : "No need probing a path with less than two hops" . to_string ( )
901
901
} ) )
@@ -1004,8 +1004,10 @@ impl OutboundPayments {
1004
1004
path_errs. push ( Err ( APIError :: InvalidRoute { err : "Sending to blinded paths isn't supported yet" . to_owned ( ) } ) ) ;
1005
1005
continue ' path_check;
1006
1006
}
1007
+ let dest_hop_idx = if path. blinded_tail . is_some ( ) && path. blinded_tail . as_ref ( ) . unwrap ( ) . hops . len ( ) > 1 {
1008
+ usize:: max_value ( ) } else { path. hops . len ( ) - 1 } ;
1007
1009
for ( idx, hop) in path. hops . iter ( ) . enumerate ( ) {
1008
- if idx != path . hops . len ( ) - 1 && hop. pubkey == our_node_id {
1010
+ if idx != dest_hop_idx && hop. pubkey == our_node_id {
1009
1011
path_errs. push ( Err ( APIError :: InvalidRoute { err : "Path went through us but wasn't a simple rebalance loop to us" . to_owned ( ) } ) ) ;
1010
1012
continue ' path_check;
1011
1013
}
0 commit comments