Skip to content

Commit 11d12d1

Browse files
Merge pull request #3586 from TheBlueMatt/2025-02-router-fixes
Fix router-backtrack cases in last-hop hints
2 parents 1b281f1 + 0f3c4d2 commit 11d12d1

File tree

7 files changed

+357
-576
lines changed

7 files changed

+357
-576
lines changed

fuzz/src/chanmon_consistency.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ use lightning::ln::channelmanager::{
5353
use lightning::ln::functional_test_utils::*;
5454
use lightning::ln::inbound_payment::ExpandedKey;
5555
use lightning::ln::msgs::{
56-
self, ChannelMessageHandler, CommitmentUpdate, DecodeError, Init, UpdateAddHTLC,
56+
ChannelMessageHandler, CommitmentUpdate, DecodeError, Init, UpdateAddHTLC,
5757
};
5858
use lightning::ln::script::ShutdownScript;
5959
use lightning::ln::types::ChannelId;
@@ -118,7 +118,7 @@ impl Router for FuzzRouter {
118118
fn find_route(
119119
&self, _payer: &PublicKey, _params: &RouteParameters,
120120
_first_hops: Option<&[&ChannelDetails]>, _inflight_htlcs: InFlightHtlcs,
121-
) -> Result<Route, msgs::LightningError> {
121+
) -> Result<Route, &'static str> {
122122
unreachable!()
123123
}
124124

fuzz/src/full_stack.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ use lightning::ln::channelmanager::{
4444
};
4545
use lightning::ln::functional_test_utils::*;
4646
use lightning::ln::inbound_payment::ExpandedKey;
47-
use lightning::ln::msgs::{self, DecodeError};
47+
use lightning::ln::msgs::DecodeError;
4848
use lightning::ln::peer_handler::{
4949
IgnoringMessageHandler, MessageHandler, PeerManager, SocketDescriptor,
5050
};
@@ -151,11 +151,8 @@ impl Router for FuzzRouter {
151151
fn find_route(
152152
&self, _payer: &PublicKey, _params: &RouteParameters,
153153
_first_hops: Option<&[&ChannelDetails]>, _inflight_htlcs: InFlightHtlcs,
154-
) -> Result<Route, msgs::LightningError> {
155-
Err(msgs::LightningError {
156-
err: String::from("Not implemented"),
157-
action: msgs::ErrorAction::IgnoreError,
158-
})
154+
) -> Result<Route, &'static str> {
155+
Err("Not implemented")
159156
}
160157

161158
fn create_blinded_payment_paths<T: secp256k1::Signing + secp256k1::Verification>(

lightning/src/ln/functional_test_utils.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2169,7 +2169,7 @@ macro_rules! get_payment_preimage_hash {
21692169
}
21702170

21712171
/// Gets a route from the given sender to the node described in `payment_params`.
2172-
pub fn get_route(send_node: &Node, route_params: &RouteParameters) -> Result<Route, msgs::LightningError> {
2172+
pub fn get_route(send_node: &Node, route_params: &RouteParameters) -> Result<Route, &'static str> {
21732173
let scorer = TestScorer::new();
21742174
let keys_manager = TestKeysInterface::new(&[0u8; 32], Network::Testnet);
21752175
let random_seed_bytes = keys_manager.get_secure_random_bytes();
@@ -2181,7 +2181,7 @@ pub fn get_route(send_node: &Node, route_params: &RouteParameters) -> Result<Rou
21812181
}
21822182

21832183
/// Like `get_route` above, but adds a random CLTV offset to the final hop.
2184-
pub fn find_route(send_node: &Node, route_params: &RouteParameters) -> Result<Route, msgs::LightningError> {
2184+
pub fn find_route(send_node: &Node, route_params: &RouteParameters) -> Result<Route, &'static str> {
21852185
let scorer = TestScorer::new();
21862186
let keys_manager = TestKeysInterface::new(&[0u8; 32], Network::Testnet);
21872187
let random_seed_bytes = keys_manager.get_secure_random_bytes();

lightning/src/ln/outbound_payment.rs

+5-9
Original file line numberDiff line numberDiff line change
@@ -2430,7 +2430,6 @@ mod tests {
24302430
use crate::ln::channelmanager::{PaymentId, RecipientOnionFields};
24312431
use crate::ln::inbound_payment::ExpandedKey;
24322432
use crate::types::features::{Bolt12InvoiceFeatures, ChannelFeatures, NodeFeatures};
2433-
use crate::ln::msgs::{ErrorAction, LightningError};
24342433
use crate::ln::outbound_payment::{Bolt12PaymentError, OutboundPayments, PendingOutboundPayment, Retry, RetryableSendFailure, StaleExpiration};
24352434
#[cfg(feature = "std")]
24362435
use crate::offers::invoice::DEFAULT_RELATIVE_EXPIRY;
@@ -2532,8 +2531,7 @@ mod tests {
25322531
let payment_params = PaymentParameters::from_node_id(
25332532
PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap()), 0);
25342533
let route_params = RouteParameters::from_payment_params_and_value(payment_params, 0);
2535-
router.expect_find_route(route_params.clone(),
2536-
Err(LightningError { err: String::new(), action: ErrorAction::IgnoreError }));
2534+
router.expect_find_route(route_params.clone(), Err(""));
25372535

25382536
let pending_events = Mutex::new(VecDeque::new());
25392537
if on_retry {
@@ -2863,13 +2861,11 @@ mod tests {
28632861
);
28642862
assert!(outbound_payments.has_pending_payments());
28652863

2866-
router.expect_find_route(
2867-
RouteParameters::from_payment_params_and_value(
2868-
PaymentParameters::from_bolt12_invoice(&invoice),
2869-
invoice.amount_msats(),
2870-
),
2871-
Err(LightningError { err: String::new(), action: ErrorAction::IgnoreError }),
2864+
let route_params = RouteParameters::from_payment_params_and_value(
2865+
PaymentParameters::from_bolt12_invoice(&invoice),
2866+
invoice.amount_msats(),
28722867
);
2868+
router.expect_find_route(route_params, Err(""));
28732869

28742870
assert_eq!(
28752871
outbound_payments.send_payment_for_bolt12_invoice(

lightning/src/ln/reload_tests.rs

+1
Original file line numberDiff line numberDiff line change
@@ -964,6 +964,7 @@ fn do_test_partial_claim_before_restart(persist_both_monitors: bool) {
964964

965965
// Ensure that the remaining channel is fully operation and not blocked (and that after a
966966
// cycle of commitment updates the payment preimage is ultimately pruned).
967+
nodes[0].node.peer_disconnected(nodes[1].node.get_our_node_id());
967968
send_payment(&nodes[0], &[&nodes[2], &nodes[3]], 100_000);
968969
assert!(!get_monitor!(nodes[3], chan_id_not_persisted).get_stored_preimages().contains_key(&payment_hash));
969970
}

0 commit comments

Comments
 (0)