]> git.bitcoin.ninja Git - rust-lightning/commitdiff
Make `send_payment_with_route` take `Route` by value 2024-08-deprecate-send_payment
authorMatt Corallo <git@bluematt.me>
Sun, 4 Aug 2024 15:15:11 +0000 (15:15 +0000)
committerMatt Corallo <git@bluematt.me>
Sun, 4 Aug 2024 18:08:49 +0000 (18:08 +0000)
Now that `ChannelManager::send_payment_with_route` is deprecated,
we don't care too much about making it as effecient as possible, so
there's not much cost to making it take `Route` by value. This
avoids bindings being unsure if the by-reference `Route` passed
needs to outlive the `ChannelManager` itself or if it only needs to
outlive the method call, creating some call overhead by forcing a
`Route::clone`, but avoiding a memory leak.

13 files changed:
fuzz/src/chanmon_consistency.rs
lightning/src/chain/channelmonitor.rs
lightning/src/ln/async_signer_tests.rs
lightning/src/ln/chanmon_update_fail_tests.rs
lightning/src/ln/channelmanager.rs
lightning/src/ln/functional_test_utils.rs
lightning/src/ln/functional_tests.rs
lightning/src/ln/monitor_tests.rs
lightning/src/ln/onion_route_tests.rs
lightning/src/ln/payment_tests.rs
lightning/src/ln/priv_short_conf_tests.rs
lightning/src/ln/reload_tests.rs
lightning/src/ln/shutdown_tests.rs

index 7d660f459ea63ecbb724bcb68708d7197b8c8b8d..2fb0277e1651f37fc04c9fbc27561e5ba385d3e6 100644 (file)
@@ -550,7 +550,7 @@ fn send_payment(
                .map(|chan| (chan.next_outbound_htlc_minimum_msat, chan.next_outbound_htlc_limit_msat))
                .unwrap_or((0, 0));
        if let Err(err) = source.send_payment_with_route(
-               &Route {
+               Route {
                        paths: vec![Path {
                                hops: vec![RouteHop {
                                        pubkey: dest.get_our_node_id(),
@@ -619,7 +619,7 @@ fn send_hop_payment(
                .unwrap_or((0, 0));
        let first_hop_fee = 50_000;
        if let Err(err) = source.send_payment_with_route(
-               &Route {
+               Route {
                        paths: vec![Path {
                                hops: vec![
                                        RouteHop {
index 5ecea8251004f5f2f1413f0f65033034d5c3fd6d..e097c97058c7e58fd3b677687dc519e400f2143a 100644 (file)
@@ -4902,7 +4902,7 @@ mod tests {
                // If the ChannelManager tries to update the channel, however, the ChainMonitor will pass
                // the update through to the ChannelMonitor which will refuse it (as the channel is closed).
                let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[1], nodes[0], 100_000);
-               unwrap_send_err!(nodes[1].node.send_payment_with_route(&route, payment_hash,
+               unwrap_send_err!(nodes[1].node.send_payment_with_route(route, payment_hash,
                                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)
                        ), false, APIError::MonitorUpdateInProgress, {});
                check_added_monitors!(nodes[1], 1);
index 7a87f7cc9db31d10d8c671dfd6664608cc3cb52f..7d95c24076c8a060a4f35002eb5906bb2f95ef00 100644 (file)
@@ -151,7 +151,7 @@ fn do_test_async_commitment_signature_for_commitment_signed_revoke_and_ack(enabl
        let src = &nodes[0];
        let dst = &nodes[1];
        let (route, our_payment_hash, _our_payment_preimage, our_payment_secret) = get_route_and_payment_hash!(src, dst, 8000000);
-       src.node.send_payment_with_route(&route, our_payment_hash,
+       src.node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(src, 1);
 
@@ -333,7 +333,7 @@ fn do_test_async_raa_peer_disconnect(test_case: UnblockSignerAcrossDisconnectCas
        let src = &nodes[0];
        let dst = &nodes[1];
        let (route, our_payment_hash, _our_payment_preimage, our_payment_secret) = get_route_and_payment_hash!(src, dst, 8000000);
-       src.node.send_payment_with_route(&route, our_payment_hash,
+       src.node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(src, 1);
 
@@ -457,7 +457,7 @@ fn do_test_async_commitment_signature_peer_disconnect(test_case: UnblockSignerAc
        let src = &nodes[0];
        let dst = &nodes[1];
        let (route, our_payment_hash, _our_payment_preimage, our_payment_secret) = get_route_and_payment_hash!(src, dst, 8000000);
-       src.node.send_payment_with_route(&route, our_payment_hash,
+       src.node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(src, 1);
 
@@ -574,7 +574,7 @@ fn do_test_async_commitment_signature_ordering(monitor_update_failure: bool) {
        // Start to send the second update_add_htlc + commitment_signed, but don't actually make it
        // to the peer.
        let (route, payment_hash_2, payment_preimage_2, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
-       nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+       nodes[0].node.send_payment_with_route(route, payment_hash_2,
                RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
index ca875577fd973044167052dd3e123c8275b30813..06c9c9baafe259b4859350b9a46e312d3fbe6e7f 100644 (file)
@@ -133,7 +133,7 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool) {
        chanmon_cfgs[0].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
 
        {
-               unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, payment_hash_1,
+               unwrap_send_err!(nodes[0].node.send_payment_with_route(route, payment_hash_1,
                                RecipientOnionFields::secret_only(payment_secret_1), PaymentId(payment_hash_1.0)
                        ), false, APIError::MonitorUpdateInProgress, {});
                check_added_monitors!(nodes[0], 1);
@@ -190,7 +190,7 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool) {
        let (route, payment_hash_2, _, payment_secret_2) = get_route_and_payment_hash!(&nodes[0], nodes[1], 1000000);
        {
                chanmon_cfgs[0].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
-               unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+               unwrap_send_err!(nodes[0].node.send_payment_with_route(route, payment_hash_2,
                                RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)
                        ), false, APIError::MonitorUpdateInProgress, {});
                check_added_monitors!(nodes[0], 1);
@@ -257,7 +257,7 @@ fn do_test_monitor_temporary_update_fail(disconnect_count: usize) {
        let (route, payment_hash_2, payment_preimage_2, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
        {
                chanmon_cfgs[0].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
-               unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+               unwrap_send_err!(nodes[0].node.send_payment_with_route(route, payment_hash_2,
                                RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)
                        ), false, APIError::MonitorUpdateInProgress, {});
                check_added_monitors!(nodes[0], 1);
@@ -607,7 +607,7 @@ fn test_monitor_update_fail_cs() {
 
        let (route, our_payment_hash, payment_preimage, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
        {
-               nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -700,7 +700,7 @@ fn test_monitor_update_fail_no_rebroadcast() {
 
        let (route, our_payment_hash, payment_preimage_1, payment_secret_1) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
        {
-               nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(payment_secret_1), PaymentId(our_payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -748,7 +748,7 @@ fn test_monitor_update_raa_while_paused() {
        send_payment(&nodes[0], &[&nodes[1]], 5000000);
        let (route, our_payment_hash_1, payment_preimage_1, our_payment_secret_1) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
        {
-               nodes[0].node.send_payment_with_route(&route, our_payment_hash_1,
+               nodes[0].node.send_payment_with_route(route, our_payment_hash_1,
                        RecipientOnionFields::secret_only(our_payment_secret_1), PaymentId(our_payment_hash_1.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -756,7 +756,7 @@ fn test_monitor_update_raa_while_paused() {
 
        let (route, our_payment_hash_2, payment_preimage_2, our_payment_secret_2) = get_route_and_payment_hash!(nodes[1], nodes[0], 1000000);
        {
-               nodes[1].node.send_payment_with_route(&route, our_payment_hash_2,
+               nodes[1].node.send_payment_with_route(route, our_payment_hash_2,
                        RecipientOnionFields::secret_only(our_payment_secret_2), PaymentId(our_payment_hash_2.0)).unwrap();
                check_added_monitors!(nodes[1], 1);
        }
@@ -845,7 +845,7 @@ fn do_test_monitor_update_fail_raa(test_ignore_second_cs: bool) {
        // holding cell.
        let (route, payment_hash_2, payment_preimage_2, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[2], 1000000);
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+               nodes[0].node.send_payment_with_route(route, payment_hash_2,
                        RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -870,7 +870,7 @@ fn do_test_monitor_update_fail_raa(test_ignore_second_cs: bool) {
        // being paused waiting a monitor update.
        let (route, payment_hash_3, _, payment_secret_3) = get_route_and_payment_hash!(nodes[0], nodes[2], 1000000);
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_3,
+               nodes[0].node.send_payment_with_route(route, payment_hash_3,
                        RecipientOnionFields::secret_only(payment_secret_3), PaymentId(payment_hash_3.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -890,7 +890,7 @@ fn do_test_monitor_update_fail_raa(test_ignore_second_cs: bool) {
        let (payment_preimage_4, payment_hash_4) = if test_ignore_second_cs {
                // Try to route another payment backwards from 2 to make sure 1 holds off on responding
                let (route, payment_hash_4, payment_preimage_4, payment_secret_4) = get_route_and_payment_hash!(nodes[2], nodes[0], 1000000);
-               nodes[2].node.send_payment_with_route(&route, payment_hash_4,
+               nodes[2].node.send_payment_with_route(route, payment_hash_4,
                        RecipientOnionFields::secret_only(payment_secret_4), PaymentId(payment_hash_4.0)).unwrap();
                check_added_monitors!(nodes[2], 1);
 
@@ -1197,10 +1197,10 @@ fn raa_no_response_awaiting_raa_state() {
        // requires only an RAA response due to AwaitingRAA) we can deliver the RAA and require the CS
        // generation during RAA while in monitor-update-failed state.
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_1,
+               nodes[0].node.send_payment_with_route(route.clone(), payment_hash_1,
                        RecipientOnionFields::secret_only(payment_secret_1), PaymentId(payment_hash_1.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
-               nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+               nodes[0].node.send_payment_with_route(route.clone(), payment_hash_2,
                        RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
                check_added_monitors!(nodes[0], 0);
        }
@@ -1250,7 +1250,7 @@ fn raa_no_response_awaiting_raa_state() {
        // chanmon_fail_consistency test required it to actually find the bug (by seeing out-of-sync
        // commitment transaction states) whereas here we can explicitly check for it.
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_3,
+               nodes[0].node.send_payment_with_route(route, payment_hash_3,
                        RecipientOnionFields::secret_only(payment_secret_3), PaymentId(payment_hash_3.0)).unwrap();
                check_added_monitors!(nodes[0], 0);
                assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
@@ -1344,7 +1344,7 @@ fn claim_while_disconnected_monitor_update_fail() {
        // the monitor still failed
        let (route, payment_hash_2, payment_preimage_2, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+               nodes[0].node.send_payment_with_route(route, payment_hash_2,
                        RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -1440,7 +1440,7 @@ fn monitor_failed_no_reestablish_response() {
        // on receipt).
        let (route, payment_hash_1, payment_preimage_1, payment_secret_1) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_1,
+               nodes[0].node.send_payment_with_route(route, payment_hash_1,
                        RecipientOnionFields::secret_only(payment_secret_1), PaymentId(payment_hash_1.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -1517,7 +1517,7 @@ fn first_message_on_recv_ordering() {
        // can deliver it and fail the monitor update.
        let (route, payment_hash_1, payment_preimage_1, payment_secret_1) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_1,
+               nodes[0].node.send_payment_with_route(route, payment_hash_1,
                        RecipientOnionFields::secret_only(payment_secret_1), PaymentId(payment_hash_1.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -1541,7 +1541,7 @@ fn first_message_on_recv_ordering() {
        // Route the second payment, generating an update_add_htlc/commitment_signed
        let (route, payment_hash_2, payment_preimage_2, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+               nodes[0].node.send_payment_with_route(route, payment_hash_2,
                        RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -1626,7 +1626,7 @@ fn test_monitor_update_fail_claim() {
 
        let (route, payment_hash_2, _, payment_secret_2) = get_route_and_payment_hash!(nodes[2], nodes[0], 1_000_000);
        {
-               nodes[2].node.send_payment_with_route(&route, payment_hash_2,
+               nodes[2].node.send_payment_with_route(route.clone(), payment_hash_2,
                        RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
                check_added_monitors!(nodes[2], 1);
        }
@@ -1645,7 +1645,7 @@ fn test_monitor_update_fail_claim() {
        expect_pending_htlcs_forwardable_ignore!(nodes[1]);
 
        let (_, payment_hash_3, payment_secret_3) = get_payment_preimage_hash!(nodes[0]);
-       nodes[2].node.send_payment_with_route(&route, payment_hash_3,
+       nodes[2].node.send_payment_with_route(route, payment_hash_3,
                RecipientOnionFields::secret_only(payment_secret_3), PaymentId(payment_hash_3.0)).unwrap();
        check_added_monitors!(nodes[2], 1);
 
@@ -1743,7 +1743,7 @@ fn test_monitor_update_on_pending_forwards() {
 
        let (route, payment_hash_2, payment_preimage_2, payment_secret_2) = get_route_and_payment_hash!(nodes[2], nodes[0], 1000000);
        {
-               nodes[2].node.send_payment_with_route(&route, payment_hash_2,
+               nodes[2].node.send_payment_with_route(route, payment_hash_2,
                        RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
                check_added_monitors!(nodes[2], 1);
        }
@@ -1808,7 +1808,7 @@ fn monitor_update_claim_fail_no_response() {
        // Now start forwarding a second payment, skipping the last RAA so B is in AwaitingRAA
        let (route, payment_hash_2, payment_preimage_2, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+               nodes[0].node.send_payment_with_route(route, payment_hash_2,
                        RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -2007,7 +2007,7 @@ fn test_path_paused_mpp() {
        // the second got a MonitorUpdateInProgress err. This implies
        // PaymentSendFailure::PartialFailure as some paths succeeded, preventing retry.
        if let Err(PaymentSendFailure::PartialFailure { results, ..}) = nodes[0].node.send_payment_with_route(
-               &route, payment_hash, RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)
+               route, payment_hash, RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)
        ) {
                assert_eq!(results.len(), 2);
                if let Ok(()) = results[0] {} else { panic!(); }
@@ -2055,7 +2055,7 @@ fn test_pending_update_fee_ack_on_reconnect() {
        send_payment(&nodes[0], &[&nodes[1]], 100_000_00);
 
        let (route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(&nodes[1], nodes[0], 1_000_000);
-       nodes[1].node.send_payment_with_route(&route, payment_hash,
+       nodes[1].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[1], 1);
        let bs_initial_send_msgs = get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id());
@@ -2315,13 +2315,13 @@ fn do_channel_holding_cell_serialize(disconnect: bool, reload_a: bool) {
        // (c) will not be freed from the holding cell.
        let (payment_preimage_0, payment_hash_0, ..) = route_payment(&nodes[1], &[&nodes[0]], 100_000);
 
-       nodes[0].node.send_payment_with_route(&route, payment_hash_1,
+       nodes[0].node.send_payment_with_route(route.clone(), payment_hash_1,
                RecipientOnionFields::secret_only(payment_secret_1), PaymentId(payment_hash_1.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let send = SendEvent::from_node(&nodes[0]);
        assert_eq!(send.msgs.len(), 1);
 
-       nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+       nodes[0].node.send_payment_with_route(route, payment_hash_2,
                RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
        check_added_monitors!(nodes[0], 0);
 
@@ -2494,7 +2494,7 @@ fn do_test_reconnect_dup_htlc_claims(htlc_status: HTLCStatusAtDupClaim, second_f
                // In order to get the HTLC claim into the holding cell at nodes[1], we need nodes[1] to be
                // awaiting a remote revoke_and_ack from nodes[0].
                let (route, second_payment_hash, _, second_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 100_000);
-               nodes[0].node.send_payment_with_route(&route, second_payment_hash,
+               nodes[0].node.send_payment_with_route(route, second_payment_hash,
                        RecipientOnionFields::secret_only(second_payment_secret), PaymentId(second_payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
 
@@ -3584,7 +3584,7 @@ fn do_test_glacial_peer_cant_hang(hold_chan_a: bool) {
 
                let (route, payment_hash_2, _, payment_secret_2) = get_route_and_payment_hash!(&nodes[1], nodes[2], 1_000_000);
 
-               nodes[1].node.send_payment_with_route(&route, payment_hash_2,
+               nodes[1].node.send_payment_with_route(route, payment_hash_2,
                        RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
                check_added_monitors(&nodes[1], 0);
 
index 3a2d62497a420830e642181116daf9199a7bedc2..5f5a64e3eac060de81d29663c1eac40c4b60e141 100644 (file)
@@ -4147,11 +4147,11 @@ where
        /// [`PeerManager::process_events`]: crate::ln::peer_handler::PeerManager::process_events
        /// [`ChannelMonitorUpdateStatus::InProgress`]: crate::chain::ChannelMonitorUpdateStatus::InProgress
        #[cfg_attr(not(any(test, feature = "_test_utils")), deprecated(note = "Use `send_payment` instead"))]
-       pub fn send_payment_with_route(&self, route: &Route, payment_hash: PaymentHash, recipient_onion: RecipientOnionFields, payment_id: PaymentId) -> Result<(), PaymentSendFailure> {
+       pub fn send_payment_with_route(&self, route: Route, payment_hash: PaymentHash, recipient_onion: RecipientOnionFields, payment_id: PaymentId) -> Result<(), PaymentSendFailure> {
                let best_block_height = self.best_block.read().unwrap().height;
                let _persistence_guard = PersistenceNotifierGuard::notify_on_drop(self);
                self.pending_outbound_payments
-                       .send_payment_with_route(route, payment_hash, recipient_onion, payment_id,
+                       .send_payment_with_route(&route, payment_hash, recipient_onion, payment_id,
                                &self.entropy_source, &self.node_signer, best_block_height,
                                |args| self.send_payment_along_path(args))
        }
@@ -12990,7 +12990,7 @@ mod tests {
 
                // Next, attempt a regular payment and make sure it fails.
                let payment_secret = PaymentSecret([43; 32]);
-               nodes[0].node.send_payment_with_route(&route, payment_hash,
+               nodes[0].node.send_payment_with_route(route.clone(), payment_hash,
                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
                let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -13177,7 +13177,7 @@ mod tests {
                route.paths[1].hops[0].short_channel_id = chan_2_id;
                route.paths[1].hops[1].short_channel_id = chan_4_id;
 
-               match nodes[0].node.send_payment_with_route(&route, payment_hash,
+               match nodes[0].node.send_payment_with_route(route, payment_hash,
                        RecipientOnionFields::spontaneous_empty(), PaymentId(payment_hash.0))
                .unwrap_err() {
                        PaymentSendFailure::ParameterError(APIError::APIMisuseError { ref err }) => {
index 3af30a5810688c81ae96f76709bfb831a520605a..1d351457cb500ae0ac5518575fbfea2d7958ced0 100644 (file)
@@ -2543,7 +2543,7 @@ pub fn expect_payment_failed_conditions<'a, 'b, 'c, 'd, 'e>(
 
 pub fn send_along_route_with_secret<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, route: Route, expected_paths: &[&[&Node<'a, 'b, 'c>]], recv_value: u64, our_payment_hash: PaymentHash, our_payment_secret: PaymentSecret) -> PaymentId {
        let payment_id = PaymentId(origin_node.keys_manager.backing.get_secure_random_bytes());
-       origin_node.node.send_payment_with_route(&route, our_payment_hash,
+       origin_node.node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), payment_id).unwrap();
        check_added_monitors!(origin_node, expected_paths.len());
        pass_along_route(origin_node, expected_paths, recv_value, our_payment_hash, our_payment_secret);
@@ -3052,7 +3052,7 @@ pub fn route_over_limit<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_rou
        }
 
        let (_, our_payment_hash, our_payment_secret) = get_payment_preimage_hash!(expected_route.last().unwrap());
-       unwrap_send_err!(origin_node.node.send_payment_with_route(&route, our_payment_hash,
+       unwrap_send_err!(origin_node.node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)),
                true, APIError::ChannelUnavailable { ref err },
                assert!(err.contains("Cannot send value that would put us over the max HTLC value in flight our peer will accept")));
index 81d152e004891995223e7820c6dbebe76d999635..40f114ecfa969d2dba03a89dbfb3660bd9426290 100644 (file)
@@ -296,7 +296,7 @@ fn test_async_inbound_update_fee() {
 
        // ...but before it's delivered, nodes[1] starts to send a payment back to nodes[0]...
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[1], nodes[0], 40000);
-       nodes[1].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[1].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[1], 1);
 
@@ -396,7 +396,7 @@ fn test_update_fee_unordered_raa() {
 
        // ...but before it's delivered, nodes[1] starts to send a payment back to nodes[0]...
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[1], nodes[0], 40000);
-       nodes[1].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[1].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[1], 1);
 
@@ -840,7 +840,7 @@ fn test_update_fee_with_fundee_update_add_htlc() {
        let (route, our_payment_hash, our_payment_preimage, our_payment_secret) = get_route_and_payment_hash!(nodes[1], nodes[0], 800000);
 
        // nothing happens since node[1] is in AwaitingRemoteRevoke
-       nodes[1].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[1].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        {
                let mut added_monitors = nodes[0].chain_monitor.added_monitors.lock().unwrap();
@@ -1166,7 +1166,7 @@ fn holding_cell_htlc_counting() {
        let mut payments = Vec::new();
        for _ in 0..50 {
                let (route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(nodes[1], nodes[2], 100000);
-               nodes[1].node.send_payment_with_route(&route, payment_hash,
+               nodes[1].node.send_payment_with_route(route, payment_hash,
                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
                payments.push((payment_preimage, payment_hash));
        }
@@ -1181,7 +1181,7 @@ fn holding_cell_htlc_counting() {
        // the holding cell waiting on B's RAA to send. At this point we should not be able to add
        // another HTLC.
        {
-               unwrap_send_err!(nodes[1].node.send_payment_with_route(&route, payment_hash_1,
+               unwrap_send_err!(nodes[1].node.send_payment_with_route(route, payment_hash_1,
                                RecipientOnionFields::secret_only(payment_secret_1), PaymentId(payment_hash_1.0)
                        ), true, APIError::ChannelUnavailable { .. }, {});
                assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
@@ -1190,7 +1190,7 @@ fn holding_cell_htlc_counting() {
        // This should also be true if we try to forward a payment.
        let (route, payment_hash_2, _, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[2], 100000);
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+               nodes[0].node.send_payment_with_route(route, payment_hash_2,
                        RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
        }
@@ -1403,7 +1403,7 @@ fn test_basic_channel_reserve() {
        let (mut route, our_payment_hash, _, our_payment_secret) =
                get_route_and_payment_hash!(nodes[0], nodes[1], max_can_send);
        route.paths[0].hops.last_mut().unwrap().fee_msat += 1;
-       let err = nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       let err = nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).err().unwrap();
        match err {
                PaymentSendFailure::AllFailedResendSafe(ref fails) => {
@@ -1597,7 +1597,7 @@ fn test_chan_reserve_violation_outbound_htlc_inbound_chan() {
        }
 
        // However one more HTLC should be significantly over the reserve amount and fail.
-       unwrap_send_err!(nodes[1].node.send_payment_with_route(&route, our_payment_hash,
+       unwrap_send_err!(nodes[1].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)
                ), true, APIError::ChannelUnavailable { .. }, {});
        assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
@@ -1697,7 +1697,7 @@ fn test_chan_reserve_dust_inbound_htlcs_outbound_chan() {
        let (mut route, our_payment_hash, _, our_payment_secret) =
                get_route_and_payment_hash!(nodes[1], nodes[0], dust_amt);
        route.paths[0].hops[0].fee_msat += 1;
-       unwrap_send_err!(nodes[1].node.send_payment_with_route(&route, our_payment_hash,
+       unwrap_send_err!(nodes[1].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)
                ), true, APIError::ChannelUnavailable { .. }, {});
 }
@@ -1792,7 +1792,7 @@ fn test_chan_reserve_violation_inbound_htlc_inbound_chan() {
        // Add a pending HTLC.
        let (route_1, our_payment_hash_1, _, our_payment_secret_1) = get_route_and_payment_hash!(nodes[0], nodes[2], amt_msat_1);
        let payment_event_1 = {
-               nodes[0].node.send_payment_with_route(&route_1, our_payment_hash_1,
+               nodes[0].node.send_payment_with_route(route_1.clone(), our_payment_hash_1,
                        RecipientOnionFields::secret_only(our_payment_secret_1), PaymentId(our_payment_hash_1.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
 
@@ -1909,7 +1909,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
                route.paths[0].hops.last_mut().unwrap().fee_msat += 1;
                assert!(route.paths[0].hops.iter().rev().skip(1).all(|h| h.fee_msat == feemsat));
 
-               unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               unwrap_send_err!(nodes[0].node.send_payment_with_route(route, our_payment_hash,
                                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)
                        ), true, APIError::ChannelUnavailable { .. }, {});
                assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
@@ -1965,7 +1965,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
 
        let (route_1, our_payment_hash_1, our_payment_preimage_1, our_payment_secret_1) = get_route_and_payment_hash!(nodes[0], nodes[2], recv_value_1);
        let payment_event_1 = {
-               nodes[0].node.send_payment_with_route(&route_1, our_payment_hash_1,
+               nodes[0].node.send_payment_with_route(route_1.clone(), our_payment_hash_1,
                        RecipientOnionFields::secret_only(our_payment_secret_1), PaymentId(our_payment_hash_1.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
 
@@ -1981,7 +1981,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
                let mut route = route_1.clone();
                route.paths[0].hops.last_mut().unwrap().fee_msat = recv_value_2 + 1;
                let (_, our_payment_hash, our_payment_secret) = get_payment_preimage_hash!(nodes[2]);
-               unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               unwrap_send_err!(nodes[0].node.send_payment_with_route(route, our_payment_hash,
                                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)
                        ), true, APIError::ChannelUnavailable { .. }, {});
                assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
@@ -2000,7 +2000,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
        // now see if they go through on both sides
        let (route_21, our_payment_hash_21, our_payment_preimage_21, our_payment_secret_21) = get_route_and_payment_hash!(nodes[0], nodes[2], recv_value_21);
        // but this will stuck in the holding cell
-       nodes[0].node.send_payment_with_route(&route_21, our_payment_hash_21,
+       nodes[0].node.send_payment_with_route(route_21, our_payment_hash_21,
                RecipientOnionFields::secret_only(our_payment_secret_21), PaymentId(our_payment_hash_21.0)).unwrap();
        check_added_monitors!(nodes[0], 0);
        let events = nodes[0].node.get_and_clear_pending_events();
@@ -2011,7 +2011,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
                let (mut route, our_payment_hash, _, our_payment_secret) =
                        get_route_and_payment_hash!(nodes[0], nodes[2], recv_value_22);
                route.paths[0].hops.last_mut().unwrap().fee_msat += 1;
-               unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               unwrap_send_err!(nodes[0].node.send_payment_with_route(route, our_payment_hash,
                                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)
                        ), true, APIError::ChannelUnavailable { .. }, {});
                assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
@@ -2019,7 +2019,7 @@ fn test_channel_reserve_holding_cell_htlcs() {
 
        let (route_22, our_payment_hash_22, our_payment_preimage_22, our_payment_secret_22) = get_route_and_payment_hash!(nodes[0], nodes[2], recv_value_22);
        // this will also stuck in the holding cell
-       nodes[0].node.send_payment_with_route(&route_22, our_payment_hash_22,
+       nodes[0].node.send_payment_with_route(route_22, our_payment_hash_22,
                RecipientOnionFields::secret_only(our_payment_secret_22), PaymentId(our_payment_hash_22.0)).unwrap();
        check_added_monitors!(nodes[0], 0);
        assert!(nodes[0].node.get_and_clear_pending_events().is_empty());
@@ -2160,7 +2160,7 @@ fn channel_reserve_in_flight_removes() {
        // Start routing the third HTLC (this is just used to get everyone in the right state).
        let (route, payment_hash_3, payment_preimage_3, payment_secret_3) = get_route_and_payment_hash!(nodes[0], nodes[1], 100000);
        let send_1 = {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_3,
+               nodes[0].node.send_payment_with_route(route, payment_hash_3,
                        RecipientOnionFields::secret_only(payment_secret_3), PaymentId(payment_hash_3.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
                let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -2235,7 +2235,7 @@ fn channel_reserve_in_flight_removes() {
        // to A to ensure that A doesn't count the almost-removed HTLC in update_add processing.
        let (route, payment_hash_4, payment_preimage_4, payment_secret_4) = get_route_and_payment_hash!(nodes[1], nodes[0], 10000);
        let send_2 = {
-               nodes[1].node.send_payment_with_route(&route, payment_hash_4,
+               nodes[1].node.send_payment_with_route(route, payment_hash_4,
                        RecipientOnionFields::secret_only(payment_secret_4), PaymentId(payment_hash_4.0)).unwrap();
                check_added_monitors!(nodes[1], 1);
                let mut events = nodes[1].node.get_and_clear_pending_msg_events();
@@ -3336,7 +3336,7 @@ fn do_test_commitment_revoked_fail_backward_exhaustive(deliver_bs_raa: bool, use
        // Add a fourth HTLC, this one will get sequestered away in nodes[1]'s holding cell waiting
        // on nodes[2]'s RAA.
        let (route, fourth_payment_hash, _, fourth_payment_secret) = get_route_and_payment_hash!(nodes[1], nodes[2], 1000000);
-       nodes[1].node.send_payment_with_route(&route, fourth_payment_hash,
+       nodes[1].node.send_payment_with_route(route, fourth_payment_hash,
                RecipientOnionFields::secret_only(fourth_payment_secret), PaymentId(fourth_payment_hash.0)).unwrap();
        assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
        assert!(nodes[1].node.get_and_clear_pending_events().is_empty());
@@ -3512,7 +3512,7 @@ fn fail_backward_pending_htlc_upon_channel_failure() {
        // Alice -> Bob: Route a payment but without Bob sending revoke_and_ack.
        {
                let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 50_000);
-               nodes[0].node.send_payment_with_route(&route, payment_hash, RecipientOnionFields::secret_only(payment_secret),
+               nodes[0].node.send_payment_with_route(route, payment_hash, RecipientOnionFields::secret_only(payment_secret),
                        PaymentId(payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
 
@@ -3528,7 +3528,7 @@ fn fail_backward_pending_htlc_upon_channel_failure() {
        // Alice -> Bob: Route another payment but now Alice waits for Bob's earlier revoke_and_ack.
        let (route, failed_payment_hash, _, failed_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 50_000);
        {
-               nodes[0].node.send_payment_with_route(&route, failed_payment_hash,
+               nodes[0].node.send_payment_with_route(route, failed_payment_hash,
                        RecipientOnionFields::secret_only(failed_payment_secret), PaymentId(failed_payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 0);
 
@@ -3638,7 +3638,7 @@ fn test_force_close_fail_back() {
        let (route, our_payment_hash, our_payment_preimage, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], 1000000);
 
        let mut payment_event = {
-               nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
 
@@ -3884,7 +3884,7 @@ fn do_test_drop_messages_peer_disconnect(messages_delivered: u8, simulate_broken
        let (route, payment_hash_1, payment_preimage_1, payment_secret_1) = get_route_and_payment_hash!(nodes[0], nodes[1], 1_000_000);
 
        let payment_event = {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_1,
+               nodes[0].node.send_payment_with_route(route, payment_hash_1,
                        RecipientOnionFields::secret_only(payment_secret_1), PaymentId(payment_hash_1.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
 
@@ -4241,7 +4241,7 @@ fn test_drop_messages_peer_disconnect_dual_htlc() {
 
        // Now try to send a second payment which will fail to send
        let (route, payment_hash_2, payment_preimage_2, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
-       nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+       nodes[0].node.send_payment_with_route(route, payment_hash_2,
                RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -4463,7 +4463,7 @@ fn do_test_holding_cell_htlc_add_timeouts(forwarded_htlc: bool) {
 
        // Route a first payment to get the 1 -> 2 channel in awaiting_raa...
        let (route, first_payment_hash, _, first_payment_secret) = get_route_and_payment_hash!(nodes[1], nodes[2], 100000);
-       nodes[1].node.send_payment_with_route(&route, first_payment_hash,
+       nodes[1].node.send_payment_with_route(route, first_payment_hash,
                RecipientOnionFields::secret_only(first_payment_secret), PaymentId(first_payment_hash.0)).unwrap();
        assert_eq!(nodes[1].node.get_and_clear_pending_msg_events().len(), 1);
        check_added_monitors!(nodes[1], 1);
@@ -4471,7 +4471,7 @@ fn do_test_holding_cell_htlc_add_timeouts(forwarded_htlc: bool) {
        // Now attempt to route a second payment, which should be placed in the holding cell
        let sending_node = if forwarded_htlc { &nodes[0] } else { &nodes[1] };
        let (route, second_payment_hash, _, second_payment_secret) = get_route_and_payment_hash!(sending_node, nodes[2], 100000);
-       sending_node.node.send_payment_with_route(&route, second_payment_hash,
+       sending_node.node.send_payment_with_route(route, second_payment_hash,
                RecipientOnionFields::secret_only(second_payment_secret), PaymentId(second_payment_hash.0)).unwrap();
        if forwarded_htlc {
                check_added_monitors!(nodes[0], 1);
@@ -5737,7 +5737,7 @@ fn do_htlc_claim_current_remote_commitment_only(use_dust: bool) {
        let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
 
        let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], if use_dust { 50000 } else { 3000000 });
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -5974,7 +5974,7 @@ fn test_fail_holding_cell_htlc_upon_free() {
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], max_can_send);
 
        // Send a payment which passes reserve checks but gets stuck in the holding cell.
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        chan_stat = get_channel_value_stat!(nodes[0], nodes[1], chan.2);
        assert_eq!(chan_stat.holding_cell_outbound_amount_msat, max_can_send);
@@ -6056,12 +6056,12 @@ fn test_free_and_fail_holding_cell_htlcs() {
        let (route_2, payment_hash_2, _, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[1], amt_2);
 
        // Send 2 payments which pass reserve checks but get stuck in the holding cell.
-       nodes[0].node.send_payment_with_route(&route_1, payment_hash_1,
+       nodes[0].node.send_payment_with_route(route_1, payment_hash_1,
                RecipientOnionFields::secret_only(payment_secret_1), PaymentId(payment_hash_1.0)).unwrap();
        chan_stat = get_channel_value_stat!(nodes[0], nodes[1], chan.2);
        assert_eq!(chan_stat.holding_cell_outbound_amount_msat, amt_1);
        let payment_id_2 = PaymentId(nodes[0].keys_manager.get_secure_random_bytes());
-       nodes[0].node.send_payment_with_route(&route_2, payment_hash_2,
+       nodes[0].node.send_payment_with_route(route_2.clone(), payment_hash_2,
                RecipientOnionFields::secret_only(payment_secret_2), payment_id_2).unwrap();
        chan_stat = get_channel_value_stat!(nodes[0], nodes[1], chan.2);
        assert_eq!(chan_stat.holding_cell_outbound_amount_msat, amt_1 + amt_2);
@@ -6183,7 +6183,7 @@ fn test_fail_holding_cell_htlc_upon_free_multihop() {
        let max_can_send = 5000000 - channel_reserve - 2*commit_tx_fee_msat(feerate, 1 + 1, &channel_type_features);
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], max_can_send);
        let payment_event = {
-               nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
 
@@ -6288,7 +6288,7 @@ fn test_payment_route_reaching_same_channel_twice() {
        let cloned_hops = route.paths[0].hops.clone();
        route.paths[0].hops.extend_from_slice(&cloned_hops);
 
-       unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       unwrap_send_err!(nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)
        ), false, APIError::InvalidRoute { ref err },
        assert_eq!(err, &"Path went through the same channel twice"));
@@ -6310,7 +6310,7 @@ fn test_update_add_htlc_bolt2_sender_value_below_minimum_msat() {
        let (mut route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 100000);
        route.paths[0].hops[0].fee_msat = 100;
 
-       unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       unwrap_send_err!(nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)
                ), true, APIError::ChannelUnavailable { .. }, {});
        assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
@@ -6327,7 +6327,7 @@ fn test_update_add_htlc_bolt2_sender_zero_value_msat() {
 
        let (mut route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 100000);
        route.paths[0].hops[0].fee_msat = 0;
-       unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       unwrap_send_err!(nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)),
                true, APIError::ChannelUnavailable { ref err },
                assert_eq!(err, "Cannot send 0-msat HTLC"));
@@ -6346,7 +6346,7 @@ fn test_update_add_htlc_bolt2_receiver_zero_value_msat() {
        let _chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 100000, 95000000);
 
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 100000);
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let mut updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -6374,7 +6374,7 @@ fn test_update_add_htlc_bolt2_sender_cltv_expiry_too_high() {
                .with_bolt11_features(nodes[1].node.bolt11_invoice_features()).unwrap();
        let (mut route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], payment_params, 100000000);
        route.paths[0].hops.last_mut().unwrap().cltv_expiry_delta = 500000001;
-       unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       unwrap_send_err!(nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)
                ), true, APIError::InvalidRoute { ref err },
                assert_eq!(err, &"Channel CLTV overflowed?"));
@@ -6398,7 +6398,7 @@ fn test_update_add_htlc_bolt2_sender_exceed_max_htlc_num_and_htlc_id_increment()
        for i in 0..max_accepted_htlcs {
                let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 100000);
                let payment_event = {
-                       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+                       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
                        check_added_monitors!(nodes[0], 1);
 
@@ -6418,7 +6418,7 @@ fn test_update_add_htlc_bolt2_sender_exceed_max_htlc_num_and_htlc_id_increment()
                expect_pending_htlcs_forwardable!(nodes[1]);
                expect_payment_claimable!(nodes[1], our_payment_hash, our_payment_secret, 100000);
        }
-       unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       unwrap_send_err!(nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)
                ), true, APIError::ChannelUnavailable { .. }, {});
 
@@ -6442,7 +6442,7 @@ fn test_update_add_htlc_bolt2_sender_exceed_max_htlc_value_in_flight() {
        // Manually create a route over our max in flight (which our router normally automatically
        // limits us to.
        route.paths[0].hops[0].fee_msat =  max_in_flight + 1;
-       unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       unwrap_send_err!(nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)
                ), true, APIError::ChannelUnavailable { .. }, {});
        assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
@@ -6468,7 +6468,7 @@ fn test_update_add_htlc_bolt2_receiver_check_amount_received_more_than_min() {
        }
 
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], htlc_minimum_msat);
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let mut updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -6499,7 +6499,7 @@ fn test_update_add_htlc_bolt2_receiver_sender_can_afford_amount_sent() {
 
        let max_can_send = 5000000 - channel_reserve - commit_tx_fee_outbound;
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], max_can_send);
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let mut updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -6574,7 +6574,7 @@ fn test_update_add_htlc_bolt2_receiver_check_max_in_flight_msat() {
        let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 1000000);
 
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let mut updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -6598,7 +6598,7 @@ fn test_update_add_htlc_bolt2_receiver_check_cltv_expiry() {
 
        create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 100000, 95000000);
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let mut updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -6624,7 +6624,7 @@ fn test_update_add_htlc_bolt2_receiver_check_repeated_id_ignore() {
 
        create_announced_chan_between_nodes(&nodes, 0, 1);
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -6674,7 +6674,7 @@ fn test_update_fulfill_htlc_bolt2_update_fulfill_htlc_before_commitment() {
        let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
        let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
        let (route, our_payment_hash, our_payment_preimage, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
 
        check_added_monitors!(nodes[0], 1);
@@ -6707,7 +6707,7 @@ fn test_update_fulfill_htlc_bolt2_update_fail_htlc_before_commitment() {
        let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
 
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -6739,7 +6739,7 @@ fn test_update_fulfill_htlc_bolt2_update_fail_malformed_htlc_before_commitment()
        let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
 
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -6857,7 +6857,7 @@ fn test_update_fulfill_htlc_bolt2_missing_badonion_bit_for_malformed_htlc_messag
        create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 1000000);
 
        let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 1000000);
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -6909,7 +6909,7 @@ fn test_update_fulfill_htlc_bolt2_after_malformed_htlc_message_must_forward_upda
 
        //First hop
        let mut payment_event = {
-               nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
                let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -6984,7 +6984,7 @@ fn test_channel_failed_after_message_with_badonion_node_perm_bits_set() {
 
        // First hop
        let mut payment_event = {
-               nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
                SendEvent::from_node(&nodes[0])
@@ -7333,7 +7333,7 @@ fn test_check_htlc_underpaying() {
                None, nodes[0].logger, &scorer, &Default::default(), &random_seed_bytes).unwrap();
        let (_, our_payment_hash, _) = get_payment_preimage_hash!(nodes[0]);
        let our_payment_secret = nodes[1].node.create_inbound_payment_for_hash(our_payment_hash, Some(100_000), 7200, None).unwrap();
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -8434,7 +8434,7 @@ fn test_preimage_storage() {
        {
                let (payment_hash, payment_secret) = nodes[1].node.create_inbound_payment(Some(100_000), 7200, None).unwrap();
                let (route, _, _, _) = get_route_and_payment_hash!(nodes[0], nodes[1], 100_000);
-               nodes[0].node.send_payment_with_route(&route, payment_hash,
+               nodes[0].node.send_payment_with_route(route, payment_hash,
                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
                let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -8508,19 +8508,19 @@ fn test_bad_secret_hash() {
        let expected_error_data = [0, 0, 0, 0, 0, 1, 0x86, 0xa0, 0, 0, 0, CHAN_CONFIRM_DEPTH as u8];
 
        // Send a payment with the right payment hash but the wrong payment secret
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), our_payment_hash,
                RecipientOnionFields::secret_only(random_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        handle_unknown_invalid_payment_data!(our_payment_hash);
        expect_payment_failed!(nodes[0], our_payment_hash, true, expected_error_code, expected_error_data);
 
        // Send a payment with a random payment hash, but the right payment secret
-       nodes[0].node.send_payment_with_route(&route, random_payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), random_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(random_payment_hash.0)).unwrap();
        handle_unknown_invalid_payment_data!(random_payment_hash);
        expect_payment_failed!(nodes[0], random_payment_hash, true, expected_error_code, expected_error_data);
 
        // Send a payment with a random payment hash and random payment secret
-       nodes[0].node.send_payment_with_route(&route, random_payment_hash,
+       nodes[0].node.send_payment_with_route(route, random_payment_hash,
                RecipientOnionFields::secret_only(random_payment_secret), PaymentId(random_payment_hash.0)).unwrap();
        handle_unknown_invalid_payment_data!(random_payment_hash);
        expect_payment_failed!(nodes[0], random_payment_hash, true, expected_error_code, expected_error_data);
@@ -8677,7 +8677,7 @@ fn test_concurrent_monitor_claim() {
 
        // Route another payment to generate another update with still previous HTLC pending
        let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[1], nodes[0], 3000000);
-       nodes[1].node.send_payment_with_route(&route, payment_hash,
+       nodes[1].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[1], 1);
 
@@ -9670,7 +9670,7 @@ fn do_test_dup_htlc_second_rejected(test_for_second_fail_panic: bool) {
        let (our_payment_preimage, our_payment_hash, our_payment_secret) = get_payment_preimage_hash!(&nodes[1]);
 
        {
-               nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               nodes[0].node.send_payment_with_route(route.clone(), our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
                let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -9684,7 +9684,7 @@ fn do_test_dup_htlc_second_rejected(test_for_second_fail_panic: bool) {
 
        {
                // Note that we use a different PaymentId here to allow us to duplicativly pay
-               nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+               nodes[0].node.send_payment_with_route(route, our_payment_hash,
                        RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_secret.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
                let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -9910,7 +9910,7 @@ fn test_double_partial_claim() {
        pass_failed_payment_back(&nodes[0], &[&[&nodes[1], &nodes[3]], &[&nodes[2], &nodes[3]]], false, payment_hash, PaymentFailureReason::RecipientRejected);
 
        // nodes[1] now retries one of the two paths...
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 2);
 
@@ -10063,7 +10063,7 @@ fn do_test_max_dust_htlc_exposure(dust_outbound_balance: bool, exposure_breach_e
                        // Note, we need sent payment to be above outbound dust threshold on counterparty_tx of 2132 sats
                        for _ in 0..dust_outbound_htlc_on_holder_tx {
                                let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], dust_outbound_htlc_on_holder_tx_msat);
-                               nodes[0].node.send_payment_with_route(&route, payment_hash,
+                               nodes[0].node.send_payment_with_route(route, payment_hash,
                                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
                        }
                } else {
@@ -10080,7 +10080,7 @@ fn do_test_max_dust_htlc_exposure(dust_outbound_balance: bool, exposure_breach_e
                        // Outbound dust balance: 5000 sats
                        for _ in 0..dust_htlc_on_counterparty_tx - 1 {
                                let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], dust_htlc_on_counterparty_tx_msat);
-                               nodes[0].node.send_payment_with_route(&route, payment_hash,
+                               nodes[0].node.send_payment_with_route(route, payment_hash,
                                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
                        }
                } else {
@@ -10097,17 +10097,17 @@ fn do_test_max_dust_htlc_exposure(dust_outbound_balance: bool, exposure_breach_e
                        if on_holder_tx { dust_outbound_htlc_on_holder_tx_msat } else { dust_htlc_on_counterparty_tx_msat + 1 };
                // With default dust exposure: 5000 sats
                if on_holder_tx {
-                       unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, payment_hash,
+                       unwrap_send_err!(nodes[0].node.send_payment_with_route(route, payment_hash,
                                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)
                                ), true, APIError::ChannelUnavailable { .. }, {});
                } else {
-                       unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, payment_hash,
+                       unwrap_send_err!(nodes[0].node.send_payment_with_route(route, payment_hash,
                                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)
                                ), true, APIError::ChannelUnavailable { .. }, {});
                }
        } else if exposure_breach_event == ExposureEvent::AtHTLCReception {
                let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[1], nodes[0], if on_holder_tx { dust_inbound_htlc_on_holder_tx_msat } else { dust_htlc_on_counterparty_tx_msat + 4 });
-               nodes[1].node.send_payment_with_route(&route, payment_hash,
+               nodes[1].node.send_payment_with_route(route, payment_hash,
                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
                check_added_monitors!(nodes[1], 1);
                let mut events = nodes[1].node.get_and_clear_pending_msg_events();
@@ -10134,7 +10134,7 @@ fn do_test_max_dust_htlc_exposure(dust_outbound_balance: bool, exposure_breach_e
                // to cross the threshold.
                for _ in 0..AT_FEE_OUTBOUND_HTLCS {
                        let (_, payment_hash, payment_secret) = get_payment_preimage_hash(&nodes[1], Some(1_000), None);
-                       nodes[0].node.send_payment_with_route(&route, payment_hash,
+                       nodes[0].node.send_payment_with_route(route.clone(), payment_hash,
                                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
                }
                {
@@ -10246,7 +10246,7 @@ fn test_nondust_htlc_fees_are_dust() {
        let (route, payment_hash, _, payment_secret) =
                get_route_and_payment_hash!(nodes[2], nodes[1], dust_limit * 2);
        let onion = RecipientOnionFields::secret_only(payment_secret);
-       nodes[2].node.send_payment_with_route(&route, payment_hash, onion, PaymentId([0; 32])).unwrap();
+       nodes[2].node.send_payment_with_route(route, payment_hash, onion, PaymentId([0; 32])).unwrap();
        check_added_monitors(&nodes[2], 1);
        let send = SendEvent::from_node(&nodes[2]);
 
@@ -10443,7 +10443,7 @@ fn do_payment_with_custom_min_final_cltv_expiry(valid_delta: bool, use_user_hash
                (payment_hash, nodes[1].node.get_payment_preimage(payment_hash, payment_secret).unwrap(), payment_secret)
        };
        let route = get_route!(nodes[0], payment_parameters, recv_value).unwrap();
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -10836,7 +10836,7 @@ fn do_test_multi_post_event_actions(do_reload: bool) {
        let (route, payment_hash_3, _, payment_secret_3) =
                get_route_and_payment_hash!(nodes[1], nodes[0], 100_000);
        let payment_id = PaymentId(payment_hash_3.0);
-       nodes[1].node.send_payment_with_route(&route, payment_hash_3,
+       nodes[1].node.send_payment_with_route(route, payment_hash_3,
                RecipientOnionFields::secret_only(payment_secret_3), payment_id).unwrap();
        check_added_monitors(&nodes[1], 1);
 
index af65d0cc6c40c2ba01cad6bd6f7db8c4731fc356..c2764e27f550ce6ae30287fef831a687e6e66fe5 100644 (file)
@@ -63,7 +63,7 @@ fn chanmon_fail_from_stale_commitment() {
        let (update_a, _, chan_id_2, _) = create_announced_chan_between_nodes(&nodes, 1, 2);
 
        let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], 1_000_000);
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -747,7 +747,7 @@ fn do_test_balances_on_local_commitment_htlcs(anchors: bool) {
 
        let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 10_000_000);
        let htlc_cltv_timeout = nodes[0].best_block_info().1 + TEST_FINAL_CLTV + 1; // Note ChannelManager adds one to CLTV timeouts for safety
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -759,7 +759,7 @@ fn do_test_balances_on_local_commitment_htlcs(anchors: bool) {
        expect_payment_claimable!(nodes[1], payment_hash, payment_secret, 10_000_000);
 
        let (route_2, payment_hash_2, payment_preimage_2, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[1], 20_000_000);
-       nodes[0].node.send_payment_with_route(&route_2, payment_hash_2,
+       nodes[0].node.send_payment_with_route(route_2, payment_hash_2,
                RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
index 209364c6c2a610e4f7cf7a484a3f4ad140c28934..91c60117cb17fb23c1e5b7eae1f87a15f0da89cc 100644 (file)
@@ -88,7 +88,7 @@ fn run_onion_failure_test_with_fail_intercept<F1,F2,F3>(
 
        // 0 ~~> 2 send payment
        let payment_id = PaymentId(nodes[0].keys_manager.backing.get_secure_random_bytes());
-       nodes[0].node.send_payment_with_route(&route, *payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), *payment_hash,
                RecipientOnionFields::secret_only(*payment_secret), payment_id).unwrap();
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -289,7 +289,7 @@ fn test_fee_failures() {
 
        // positive case
        let (route, payment_hash_success, payment_preimage_success, payment_secret_success) = get_route_and_payment_hash!(nodes[0], nodes[2], 40_000);
-       nodes[0].node.send_payment_with_route(&route, payment_hash_success,
+       nodes[0].node.send_payment_with_route(route.clone(), payment_hash_success,
                RecipientOnionFields::secret_only(payment_secret_success), PaymentId(payment_hash_success.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        pass_along_route(&nodes[0], &[&[&nodes[1], &nodes[2]]], 40_000, payment_hash_success, payment_secret_success);
@@ -312,7 +312,7 @@ fn test_fee_failures() {
        }
 
        let (payment_preimage_success, payment_hash_success, payment_secret_success) = get_payment_preimage_hash!(nodes[2]);
-       nodes[0].node.send_payment_with_route(&route, payment_hash_success,
+       nodes[0].node.send_payment_with_route(route, payment_hash_success,
                RecipientOnionFields::secret_only(payment_secret_success), PaymentId(payment_hash_success.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        pass_along_route(&nodes[0], &[&[&nodes[1], &nodes[2]]], 40_000, payment_hash_success, payment_secret_success);
@@ -723,7 +723,7 @@ fn test_overshoot_final_cltv() {
        let (route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], 40000);
 
        let payment_id = PaymentId(nodes[0].keys_manager.backing.get_secure_random_bytes());
-       nodes[0].node.send_payment_with_route(&route, payment_hash, RecipientOnionFields::secret_only(payment_secret), payment_id).unwrap();
+       nodes[0].node.send_payment_with_route(route, payment_hash, RecipientOnionFields::secret_only(payment_secret), payment_id).unwrap();
 
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -1012,7 +1012,7 @@ fn do_test_fail_htlc_backwards_with_reason(failure_code: FailureCode) {
 
        let payment_amount = 100_000;
        let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], payment_amount);
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -1133,7 +1133,7 @@ fn test_phantom_onion_hmac_failure() {
        let (route, phantom_scid) = get_phantom_route!(nodes, recv_value_msat, channel);
 
        // Route the HTLC through to the destination.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -1195,7 +1195,7 @@ fn test_phantom_invalid_onion_payload() {
        // We'll use the session priv later when constructing an invalid onion packet.
        let session_priv = [3; 32];
        *nodes[0].keys_manager.override_random_bytes.lock().unwrap() = Some(session_priv);
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -1270,7 +1270,7 @@ fn test_phantom_final_incorrect_cltv_expiry() {
        let (route, phantom_scid) = get_phantom_route!(nodes, recv_value_msat, channel);
 
        // Route the HTLC through to the destination.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -1330,7 +1330,7 @@ fn test_phantom_failure_too_low_cltv() {
        route.paths[0].hops[1].cltv_expiry_delta = 5;
 
        // Route the HTLC through to the destination.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -1378,7 +1378,7 @@ fn test_phantom_failure_modified_cltv() {
        let (mut route, phantom_scid) = get_phantom_route!(nodes, recv_value_msat, channel);
 
        // Route the HTLC through to the destination.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -1420,7 +1420,7 @@ fn test_phantom_failure_expires_too_soon() {
        let (mut route, phantom_scid) = get_phantom_route!(nodes, recv_value_msat, channel);
 
        // Route the HTLC through to the destination.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -1459,7 +1459,7 @@ fn test_phantom_failure_too_low_recv_amt() {
        let (mut route, phantom_scid) = get_phantom_route!(nodes, bad_recv_amt_msat, channel);
 
        // Route the HTLC through to the destination.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -1519,7 +1519,7 @@ fn do_test_phantom_dust_exposure_failure(multiplier_dust_limit: bool) {
        let (mut route, _) = get_phantom_route!(nodes, max_dust_exposure + 1, channel);
 
        // Route the HTLC through to the destination.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -1563,7 +1563,7 @@ fn test_phantom_failure_reject_payment() {
        let (mut route, phantom_scid) = get_phantom_route!(nodes, recv_amt_msat, channel);
 
        // Route the HTLC through to the destination.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let update_0 = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
index fcfdd5cb5a02f64e688ddd7cdb9b375029907226..55dee79461286adc566a9fb99ed3a3d25e0bfd81 100644 (file)
@@ -310,7 +310,7 @@ fn do_mpp_receive_timeout(send_partial_mpp: bool) {
        route.paths[1].hops[1].short_channel_id = chan_4_update.contents.short_channel_id;
 
        // Initiate the MPP payment.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 2); // one monitor per path
        let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -619,7 +619,7 @@ fn no_pending_leak_on_initial_send_failure() {
        nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id());
        nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id());
 
-       unwrap_send_err!(nodes[0].node.send_payment_with_route(&route, payment_hash,
+       unwrap_send_err!(nodes[0].node.send_payment_with_route(route, payment_hash,
                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)
                ), true, APIError::ChannelUnavailable { ref err },
                assert_eq!(err, "Peer for first hop currently disconnected"));
@@ -815,9 +815,9 @@ fn do_retry_with_no_persist(confirm_before_reload: bool) {
                nodes[1].node.timer_tick_occurred();
        }
 
-       assert!(nodes[0].node.send_payment_with_route(&new_route, payment_hash, // Shouldn't be allowed to retry a fulfilled payment
+       assert!(nodes[0].node.send_payment_with_route(new_route.clone(), payment_hash, // Shouldn't be allowed to retry a fulfilled payment
                RecipientOnionFields::secret_only(payment_secret), payment_id_1).is_err());
-       nodes[0].node.send_payment_with_route(&new_route, payment_hash,
+       nodes[0].node.send_payment_with_route(new_route.clone(), payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -965,7 +965,7 @@ fn do_test_completed_payment_not_retryable_on_reload(use_dust: bool) {
        // If we attempt to retry prior to the HTLC-Timeout (or commitment transaction, for dust HTLCs)
        // confirming, we will fail as it's considered still-pending...
        let (new_route, _, _, _) = get_route_and_payment_hash!(nodes[0], nodes[2], if use_dust { 1_000 } else { 1_000_000 });
-       match nodes[0].node.send_payment_with_route(&new_route, payment_hash, RecipientOnionFields::secret_only(payment_secret), payment_id) {
+       match nodes[0].node.send_payment_with_route(new_route.clone(), payment_hash, RecipientOnionFields::secret_only(payment_secret), payment_id) {
                Err(PaymentSendFailure::DuplicatePayment) => {},
                _ => panic!("Unexpected error")
        }
@@ -983,7 +983,7 @@ fn do_test_completed_payment_not_retryable_on_reload(use_dust: bool) {
        nodes_0_serialized = nodes[0].node.encode();
 
        // After the payment failed, we're free to send it again.
-       assert!(nodes[0].node.send_payment_with_route(&new_route, payment_hash,
+       assert!(nodes[0].node.send_payment_with_route(new_route.clone(), payment_hash,
                RecipientOnionFields::secret_only(payment_secret), payment_id).is_ok());
        assert!(!nodes[0].node.get_and_clear_pending_msg_events().is_empty());
 
@@ -999,13 +999,13 @@ fn do_test_completed_payment_not_retryable_on_reload(use_dust: bool) {
 
        // Now resend the payment, delivering the HTLC and actually claiming it this time. This ensures
        // the payment is not (spuriously) listed as still pending.
-       assert!(nodes[0].node.send_payment_with_route(&new_route, payment_hash,
+       assert!(nodes[0].node.send_payment_with_route(new_route.clone(), payment_hash,
                RecipientOnionFields::secret_only(payment_secret), payment_id).is_ok());
        check_added_monitors!(nodes[0], 1);
        pass_along_route(&nodes[0], &[&[&nodes[1], &nodes[2]]], if use_dust { 1_000 } else { 1_000_000 }, payment_hash, payment_secret);
        claim_payment(&nodes[0], &[&nodes[1], &nodes[2]], payment_preimage);
 
-       match nodes[0].node.send_payment_with_route(&new_route, payment_hash, RecipientOnionFields::secret_only(payment_secret), payment_id) {
+       match nodes[0].node.send_payment_with_route(new_route.clone(), payment_hash, RecipientOnionFields::secret_only(payment_secret), payment_id) {
                Err(PaymentSendFailure::DuplicatePayment) => {},
                _ => panic!("Unexpected error")
        }
@@ -1025,7 +1025,7 @@ fn do_test_completed_payment_not_retryable_on_reload(use_dust: bool) {
 
        reconnect_nodes(ReconnectArgs::new(&nodes[0], &nodes[1]));
 
-       match nodes[0].node.send_payment_with_route(&new_route, payment_hash, RecipientOnionFields::secret_only(payment_secret), payment_id) {
+       match nodes[0].node.send_payment_with_route(new_route, payment_hash, RecipientOnionFields::secret_only(payment_secret), payment_id) {
                Err(PaymentSendFailure::DuplicatePayment) => {},
                _ => panic!("Unexpected error")
        }
@@ -1245,7 +1245,7 @@ fn get_ldk_payment_preimage() {
                &nodes[0].network_graph.read_only(),
                Some(&nodes[0].node.list_usable_channels().iter().collect::<Vec<_>>()), nodes[0].logger,
                &scorer, &Default::default(), &random_seed_bytes).unwrap();
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -1567,7 +1567,7 @@ fn claimed_send_payment_idempotent() {
                () => {
                        // If we try to resend a new payment with a different payment_hash but with the same
                        // payment_id, it should be rejected.
-                       let send_result = nodes[0].node.send_payment_with_route(&route, second_payment_hash,
+                       let send_result = nodes[0].node.send_payment_with_route(route.clone(), second_payment_hash,
                                RecipientOnionFields::secret_only(second_payment_secret), payment_id);
                        match send_result {
                                Err(PaymentSendFailure::DuplicatePayment) => {},
@@ -1619,7 +1619,7 @@ fn claimed_send_payment_idempotent() {
                nodes[0].node.timer_tick_occurred();
        }
 
-       nodes[0].node.send_payment_with_route(&route, second_payment_hash,
+       nodes[0].node.send_payment_with_route(route, second_payment_hash,
                RecipientOnionFields::secret_only(second_payment_secret), payment_id).unwrap();
        check_added_monitors!(nodes[0], 1);
        pass_along_route(&nodes[0], &[&[&nodes[1]]], 100_000, second_payment_hash, second_payment_secret);
@@ -1644,7 +1644,7 @@ fn abandoned_send_payment_idempotent() {
                () => {
                        // If we try to resend a new payment with a different payment_hash but with the same
                        // payment_id, it should be rejected.
-                       let send_result = nodes[0].node.send_payment_with_route(&route, second_payment_hash,
+                       let send_result = nodes[0].node.send_payment_with_route(route.clone(), second_payment_hash,
                                RecipientOnionFields::secret_only(second_payment_secret), payment_id);
                        match send_result {
                                Err(PaymentSendFailure::DuplicatePayment) => {},
@@ -1678,7 +1678,7 @@ fn abandoned_send_payment_idempotent() {
 
        // However, we can reuse the PaymentId immediately after we `abandon_payment` upon passing the
        // failed payment back.
-       nodes[0].node.send_payment_with_route(&route, second_payment_hash,
+       nodes[0].node.send_payment_with_route(route, second_payment_hash,
                RecipientOnionFields::secret_only(second_payment_secret), payment_id).unwrap();
        check_added_monitors!(nodes[0], 1);
        pass_along_route(&nodes[0], &[&[&nodes[1]]], 100_000, second_payment_hash, second_payment_secret);
@@ -1828,10 +1828,10 @@ fn test_holding_cell_inflight_htlcs() {
        // Queue up two payments - one will be delivered right away, one immediately goes into the
        // holding cell as nodes[0] is AwaitingRAA.
        {
-               nodes[0].node.send_payment_with_route(&route, payment_hash_1,
+               nodes[0].node.send_payment_with_route(route.clone(), payment_hash_1,
                        RecipientOnionFields::secret_only(payment_secret_1), PaymentId(payment_hash_1.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
-               nodes[0].node.send_payment_with_route(&route, payment_hash_2,
+               nodes[0].node.send_payment_with_route(route, payment_hash_2,
                        RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
                check_added_monitors!(nodes[0], 0);
        }
@@ -1907,7 +1907,7 @@ fn do_test_intercepted_payment(test: InterceptTest) {
        ).unwrap();
 
        let (payment_hash, payment_secret) = nodes[2].node.create_inbound_payment(Some(amt_msat), 60 * 60, None).unwrap();
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        let payment_event = {
                {
@@ -3715,7 +3715,7 @@ fn do_test_custom_tlvs(spontaneous: bool, even_tlvs: bool, known_tlvs: bool) {
        if spontaneous {
                nodes[0].node.send_spontaneous_payment(&route, Some(our_payment_preimage), onion_fields, payment_id).unwrap();
        } else {
-               nodes[0].node.send_payment_with_route(&route, our_payment_hash, onion_fields, payment_id).unwrap();
+               nodes[0].node.send_payment_with_route(route, our_payment_hash, onion_fields, payment_id).unwrap();
        }
        check_added_monitors(&nodes[0], 1);
 
@@ -4200,7 +4200,7 @@ fn  test_htlc_forward_considers_anchor_outputs_value() {
                nodes[0], nodes[2], sendable_balance_msat + anchor_outpus_value_msat
        );
        nodes[0].node.send_payment_with_route(
-               &route, payment_hash, RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)
+               route, payment_hash, RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)
        ).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -4327,7 +4327,7 @@ fn test_non_strict_forwarding() {
        // Send 4 payments over the same route.
        for i in 0..4 {
                let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash(&nodes[2], Some(payment_value), None);
-               nodes[0].node.send_payment_with_route(&route, payment_hash,
+               nodes[0].node.send_payment_with_route(route.clone(), payment_hash,
                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
                check_added_monitors!(nodes[0], 1);
                let mut msg_events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -4365,7 +4365,7 @@ fn test_non_strict_forwarding() {
 
        // Send a 5th payment which will fail.
        let (_, payment_hash, payment_secret) = get_payment_preimage_hash(&nodes[2], Some(payment_value), None);
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let mut msg_events = nodes[0].node.get_and_clear_pending_msg_events();
index e747315c98c85f26371529a2b50fa46bb8d919f1..1c4401cd48822332d5fa0acdefbe192c2909badc 100644 (file)
@@ -71,7 +71,7 @@ fn test_priv_forwarding_rejection() {
                .with_route_hints(last_hops).unwrap();
        let (route, our_payment_hash, our_payment_preimage, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], payment_params, 10_000);
 
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let payment_event = SendEvent::from_event(nodes[0].node.get_and_clear_pending_msg_events().remove(0));
@@ -127,7 +127,7 @@ fn test_priv_forwarding_rejection() {
        get_event_msg!(nodes[1], MessageSendEvent::SendChannelUpdate, nodes[2].node.get_our_node_id());
        get_event_msg!(nodes[2], MessageSendEvent::SendChannelUpdate, nodes[1].node.get_our_node_id());
 
-       nodes[0].node.send_payment_with_route(&route, our_payment_hash,
+       nodes[0].node.send_payment_with_route(route, our_payment_hash,
                RecipientOnionFields::secret_only(our_payment_secret), PaymentId(our_payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        pass_along_route(&nodes[0], &[&[&nodes[1], &nodes[2]]], 10_000, our_payment_hash, our_payment_secret);
@@ -250,7 +250,7 @@ fn test_routed_scid_alias() {
                .with_route_hints(hop_hints).unwrap();
        let (route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], payment_params, 100_000);
        assert_eq!(route.paths[0].hops[1].short_channel_id, last_hop[0].inbound_scid_alias.unwrap());
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -416,7 +416,7 @@ fn test_inbound_scid_privacy() {
                .with_route_hints(hop_hints.clone()).unwrap();
        let (route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], payment_params, 100_000);
        assert_eq!(route.paths[0].hops[1].short_channel_id, last_hop[0].inbound_scid_alias.unwrap());
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -432,7 +432,7 @@ fn test_inbound_scid_privacy() {
                .with_route_hints(hop_hints).unwrap();
        let (route_2, payment_hash_2, _, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[2], payment_params_2, 100_000);
        assert_eq!(route_2.paths[0].hops[1].short_channel_id, last_hop[0].short_channel_id.unwrap());
-       nodes[0].node.send_payment_with_route(&route_2, payment_hash_2,
+       nodes[0].node.send_payment_with_route(route_2, payment_hash_2,
                RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -488,7 +488,7 @@ fn test_scid_alias_returned() {
        route.paths[0].hops[1].fee_msat = 10_000_000; // Overshoot the last channel's value
 
        // Route the HTLC through to the destination.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route.clone(), payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let as_updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -533,7 +533,7 @@ fn test_scid_alias_returned() {
        route.paths[0].hops[0].fee_msat = 0; // But set fee paid to the middle hop to 0
 
        // Route the HTLC through to the destination.
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
        let as_updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
@@ -703,7 +703,7 @@ fn test_0conf_channel_with_async_monitor() {
        // failure before we've ever confirmed the funding transaction. This previously caused a panic.
        let (route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], 1_000_000);
 
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
index 5f375ec883d7e70678208012833bda7362add137..29af8aa0d17eaeaa0df002a771d59fbfe7057e9f 100644 (file)
@@ -716,7 +716,7 @@ fn test_forwardable_regen() {
 
        // First send a payment to nodes[1]
        let (route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[1], 100_000);
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -730,7 +730,7 @@ fn test_forwardable_regen() {
 
        // Next send a payment which is forwarded by nodes[1]
        let (route_2, payment_hash_2, payment_preimage_2, payment_secret_2) = get_route_and_payment_hash!(nodes[0], nodes[2], 200_000);
-       nodes[0].node.send_payment_with_route(&route_2, payment_hash_2,
+       nodes[0].node.send_payment_with_route(route_2, payment_hash_2,
                RecipientOnionFields::secret_only(payment_secret_2), PaymentId(payment_hash_2.0)).unwrap();
        check_added_monitors!(nodes[0], 1);
 
@@ -815,7 +815,7 @@ fn do_test_partial_claim_before_restart(persist_both_monitors: bool) {
                        core::cmp::Ordering::Less } else { core::cmp::Ordering::Greater }
        });
 
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)).unwrap();
        check_added_monitors!(nodes[0], 2);
 
@@ -983,7 +983,7 @@ fn do_forwarded_payment_no_manager_persistence(use_cs_commitment: bool, claim_ht
        }
        let payment_id = PaymentId(nodes[0].keys_manager.backing.get_secure_random_bytes());
        let htlc_expiry = nodes[0].best_block_info().1 + TEST_FINAL_CLTV;
-       nodes[0].node.send_payment_with_route(&route, payment_hash,
+       nodes[0].node.send_payment_with_route(route, payment_hash,
                RecipientOnionFields::secret_only(payment_secret), payment_id).unwrap();
        check_added_monitors!(nodes[0], 1);
 
index 8f3121a8673a05b1fbf6bafabb21afb109181171..df6694a2df3fe785ed14ec1f45eb35d8d01194ab 100644 (file)
@@ -364,10 +364,10 @@ fn updates_shutdown_wait() {
        let route_params = RouteParameters::from_payment_params_and_value(payment_params_2, 100_000);
        let route_2 = get_route(&nodes[1].node.get_our_node_id(), &route_params,
                &nodes[1].network_graph.read_only(), None, &logger, &scorer, &Default::default(), &random_seed_bytes).unwrap();
-       unwrap_send_err!(nodes[0].node.send_payment_with_route(&route_1, payment_hash,
+       unwrap_send_err!(nodes[0].node.send_payment_with_route(route_1, payment_hash,
                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)
                ), true, APIError::ChannelUnavailable {..}, {});
-       unwrap_send_err!(nodes[1].node.send_payment_with_route(&route_2, payment_hash,
+       unwrap_send_err!(nodes[1].node.send_payment_with_route(route_2, payment_hash,
                        RecipientOnionFields::secret_only(payment_secret), PaymentId(payment_hash.0)
                ), true, APIError::ChannelUnavailable {..}, {});