Skip to content

Commit 3f416bc

Browse files
authored
Merge pull request #2676 from TheBlueMatt/2023-10-various-followups
Various Followups to 2039 and 2674
2 parents a1a2f2a + 32d2d0f commit 3f416bc

File tree

13 files changed

+80
-54
lines changed

13 files changed

+80
-54
lines changed

ci/ci-tests.sh

+7-5
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,16 @@ popd
100100

101101
echo -e "\n\nTesting no-std flags in various combinations"
102102
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
103-
pushd $DIR
104-
cargo test --verbose --color always --no-default-features --features no-std
103+
cargo test -p $DIR --verbose --color always --no-default-features --features no-std
105104
# check if there is a conflict between no-std and the default std feature
106-
cargo test --verbose --color always --features no-std
105+
cargo test -p $DIR --verbose --color always --features no-std
106+
done
107+
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
107108
# check if there is a conflict between no-std and the c_bindings cfg
108-
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always --no-default-features --features=no-std
109-
popd
109+
RUSTFLAGS="--cfg=c_bindings" cargo test -p $DIR --verbose --color always --no-default-features --features=no-std
110110
done
111+
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always
112+
111113
# Note that outbound_commitment_test only runs in this mode because of hardcoded signature values
112114
pushd lightning
113115
cargo test --verbose --color always --no-default-features --features=std,_test_vectors

lightning-background-processor/src/lib.rs

+17-9
Original file line numberDiff line numberDiff line change
@@ -864,7 +864,7 @@ mod tests {
864864
use lightning::ln::peer_handler::{PeerManager, MessageHandler, SocketDescriptor, IgnoringMessageHandler};
865865
use lightning::routing::gossip::{NetworkGraph, NodeId, P2PGossipSync};
866866
use lightning::routing::router::{DefaultRouter, Path, RouteHop};
867-
use lightning::routing::scoring::{ChannelUsage, ScoreUpdate, ScoreLookUp};
867+
use lightning::routing::scoring::{ChannelUsage, ScoreUpdate, ScoreLookUp, LockableScore};
868868
use lightning::util::config::UserConfig;
869869
use lightning::util::ser::Writeable;
870870
use lightning::util::test_utils;
@@ -894,6 +894,11 @@ mod tests {
894894
fn disconnect_socket(&mut self) {}
895895
}
896896

897+
#[cfg(c_bindings)]
898+
type LockingWrapper<T> = lightning::routing::scoring::MultiThreadedLockableScore<T>;
899+
#[cfg(not(c_bindings))]
900+
type LockingWrapper<T> = Mutex<T>;
901+
897902
type ChannelManager =
898903
channelmanager::ChannelManager<
899904
Arc<ChainMonitor>,
@@ -905,7 +910,7 @@ mod tests {
905910
Arc<DefaultRouter<
906911
Arc<NetworkGraph<Arc<test_utils::TestLogger>>>,
907912
Arc<test_utils::TestLogger>,
908-
Arc<Mutex<TestScorer>>,
913+
Arc<LockingWrapper<TestScorer>>,
909914
(),
910915
TestScorer>
911916
>,
@@ -927,7 +932,7 @@ mod tests {
927932
network_graph: Arc<NetworkGraph<Arc<test_utils::TestLogger>>>,
928933
logger: Arc<test_utils::TestLogger>,
929934
best_block: BestBlock,
930-
scorer: Arc<Mutex<TestScorer>>,
935+
scorer: Arc<LockingWrapper<TestScorer>>,
931936
}
932937

933938
impl Node {
@@ -1148,6 +1153,9 @@ mod tests {
11481153
}
11491154
}
11501155

1156+
#[cfg(c_bindings)]
1157+
impl lightning::routing::scoring::Score for TestScorer {}
1158+
11511159
impl Drop for TestScorer {
11521160
fn drop(&mut self) {
11531161
if std::thread::panicking() {
@@ -1179,7 +1187,7 @@ mod tests {
11791187
let logger = Arc::new(test_utils::TestLogger::with_id(format!("node {}", i)));
11801188
let genesis_block = genesis_block(network);
11811189
let network_graph = Arc::new(NetworkGraph::new(network, logger.clone()));
1182-
let scorer = Arc::new(Mutex::new(TestScorer::new()));
1190+
let scorer = Arc::new(LockingWrapper::new(TestScorer::new()));
11831191
let seed = [i as u8; 32];
11841192
let router = Arc::new(DefaultRouter::new(network_graph.clone(), logger.clone(), seed, scorer.clone(), Default::default()));
11851193
let chain_source = Arc::new(test_utils::TestChainSource::new(Network::Bitcoin));
@@ -1689,7 +1697,7 @@ mod tests {
16891697
maybe_announced_channel: true,
16901698
}], blinded_tail: None };
16911699

1692-
$nodes[0].scorer.lock().unwrap().expect(TestResult::PaymentFailure { path: path.clone(), short_channel_id: scored_scid });
1700+
$nodes[0].scorer.write_lock().expect(TestResult::PaymentFailure { path: path.clone(), short_channel_id: scored_scid });
16931701
$nodes[0].node.push_pending_event(Event::PaymentPathFailed {
16941702
payment_id: None,
16951703
payment_hash: PaymentHash([42; 32]),
@@ -1706,7 +1714,7 @@ mod tests {
17061714

17071715
// Ensure we'll score payments that were explicitly failed back by the destination as
17081716
// ProbeSuccess.
1709-
$nodes[0].scorer.lock().unwrap().expect(TestResult::ProbeSuccess { path: path.clone() });
1717+
$nodes[0].scorer.write_lock().expect(TestResult::ProbeSuccess { path: path.clone() });
17101718
$nodes[0].node.push_pending_event(Event::PaymentPathFailed {
17111719
payment_id: None,
17121720
payment_hash: PaymentHash([42; 32]),
@@ -1721,7 +1729,7 @@ mod tests {
17211729
_ => panic!("Unexpected event"),
17221730
}
17231731

1724-
$nodes[0].scorer.lock().unwrap().expect(TestResult::PaymentSuccess { path: path.clone() });
1732+
$nodes[0].scorer.write_lock().expect(TestResult::PaymentSuccess { path: path.clone() });
17251733
$nodes[0].node.push_pending_event(Event::PaymentPathSuccessful {
17261734
payment_id: PaymentId([42; 32]),
17271735
payment_hash: None,
@@ -1733,7 +1741,7 @@ mod tests {
17331741
_ => panic!("Unexpected event"),
17341742
}
17351743

1736-
$nodes[0].scorer.lock().unwrap().expect(TestResult::ProbeSuccess { path: path.clone() });
1744+
$nodes[0].scorer.write_lock().expect(TestResult::ProbeSuccess { path: path.clone() });
17371745
$nodes[0].node.push_pending_event(Event::ProbeSuccessful {
17381746
payment_id: PaymentId([42; 32]),
17391747
payment_hash: PaymentHash([42; 32]),
@@ -1745,7 +1753,7 @@ mod tests {
17451753
_ => panic!("Unexpected event"),
17461754
}
17471755

1748-
$nodes[0].scorer.lock().unwrap().expect(TestResult::ProbeFailure { path: path.clone() });
1756+
$nodes[0].scorer.write_lock().expect(TestResult::ProbeFailure { path: path.clone() });
17491757
$nodes[0].node.push_pending_event(Event::ProbeFailed {
17501758
payment_id: PaymentId([42; 32]),
17511759
payment_hash: PaymentHash([42; 32]),

lightning/src/chain/chaininterface.rs

+6-11
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,12 @@ pub enum ConfirmationTarget {
7171
/// [`ChannelConfig::max_dust_htlc_exposure`]: crate::util::config::ChannelConfig::max_dust_htlc_exposure
7272
MaxAllowedNonAnchorChannelRemoteFee,
7373
/// This is the lowest feerate we will allow our channel counterparty to have in an anchor
74-
/// channel in order to close the channel if a channel party goes away. Because our counterparty
75-
/// must ensure they can always broadcast the latest state, this value being too high will cause
76-
/// immediate force-closures.
74+
/// channel in order to close the channel if a channel party goes away.
7775
///
7876
/// This needs to be sufficient to get into the mempool when the channel needs to
79-
/// be force-closed. Setting too low may result in force-closures. Because this is for anchor
80-
/// channels, we can always bump the feerate later, the feerate here only needs to suffice to
81-
/// enter the mempool.
77+
/// be force-closed. Setting too high may result in force-closures if our counterparty attempts
78+
/// to use a lower feerate. Because this is for anchor channels, we can always bump the feerate
79+
/// later; the feerate here only needs to be sufficient to enter the mempool.
8280
///
8381
/// A good estimate is the expected mempool minimum at the time of force-closure. Obviously this
8482
/// is not an estimate which is very easy to calculate because we do not know the future. Using
@@ -87,13 +85,10 @@ pub enum ConfirmationTarget {
8785
/// (package relay) may obviate the need for this entirely.
8886
MinAllowedAnchorChannelRemoteFee,
8987
/// The lowest feerate we will allow our channel counterparty to have in a non-anchor channel.
90-
/// This needs to be sufficient to get confirmed when the channel needs to be force-closed.
91-
/// Setting too low may result in force-closures.
9288
///
9389
/// This is the feerate on the transaction which we (or our counterparty) will broadcast in
94-
/// order to close the channel if a channel party goes away. Because our counterparty must
95-
/// ensure they can always broadcast the latest state, this value being too high will cause
96-
/// immediate force-closures.
90+
/// order to close the channel if a channel party goes away. Setting this value too high will
91+
/// cause immediate force-closures in order to avoid having an unbroadcastable state.
9792
///
9893
/// This feerate represents the fee we pick now, which must be sufficient to enter a block at an
9994
/// arbitrary time in the future. Obviously this is not an estimate which is very easy to

lightning/src/chain/package.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use crate::ln::PaymentPreimage;
2424
use crate::ln::chan_utils::{TxCreationKeys, HTLCOutputInCommitment};
2525
use crate::ln::chan_utils;
2626
use crate::ln::msgs::DecodeError;
27-
use crate::chain::chaininterface::{FeeEstimator, ConfirmationTarget, MIN_RELAY_FEE_SAT_PER_1000_WEIGHT, compute_feerate_sat_per_1000_weight, fee_for_weight, FEERATE_FLOOR_SATS_PER_KW};
27+
use crate::chain::chaininterface::{FeeEstimator, ConfirmationTarget, MIN_RELAY_FEE_SAT_PER_1000_WEIGHT, compute_feerate_sat_per_1000_weight, FEERATE_FLOOR_SATS_PER_KW};
2828
use crate::sign::WriteableEcdsaChannelSigner;
2929
use crate::chain::onchaintx::{ExternalHTLCClaim, OnchainTxHandler};
3030
use crate::util::logger::Logger;

lightning/src/ln/channelmanager.rs

+18-6
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,8 @@ struct PendingInboundPayment {
827827
/// or, respectively, [`Router`] for its router, but this type alias chooses the concrete types
828828
/// of [`KeysManager`] and [`DefaultRouter`].
829829
///
830-
/// This is not exported to bindings users as Arcs don't make sense in bindings
830+
/// This is not exported to bindings users as type aliases aren't supported in most languages.
831+
#[cfg(not(c_bindings))]
831832
pub type SimpleArcChannelManager<M, T, F, L> = ChannelManager<
832833
Arc<M>,
833834
Arc<T>,
@@ -855,7 +856,8 @@ pub type SimpleArcChannelManager<M, T, F, L> = ChannelManager<
855856
/// or, respectively, [`Router`] for its router, but this type alias chooses the concrete types
856857
/// of [`KeysManager`] and [`DefaultRouter`].
857858
///
858-
/// This is not exported to bindings users as Arcs don't make sense in bindings
859+
/// This is not exported to bindings users as type aliases aren't supported in most languages.
860+
#[cfg(not(c_bindings))]
859861
pub type SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, M, T, F, L> =
860862
ChannelManager<
861863
&'a M,
@@ -7329,6 +7331,8 @@ where
73297331
/// Requires a direct connection to the introduction node in the responding [`InvoiceRequest`]'s
73307332
/// reply path.
73317333
///
7334+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
7335+
///
73327336
/// [`Offer`]: crate::offers::offer::Offer
73337337
/// [`InvoiceRequest`]: crate::offers::invoice_request::InvoiceRequest
73347338
pub fn create_offer_builder(
@@ -7362,6 +7366,9 @@ where
73627366
/// invoice. If abandoned, or an invoice isn't received before expiration, the payment will fail
73637367
/// with an [`Event::InvoiceRequestFailed`].
73647368
///
7369+
/// If `max_total_routing_fee_msat` is not specified, The default from
7370+
/// [`RouteParameters::from_payment_params_and_value`] is applied.
7371+
///
73657372
/// # Privacy
73667373
///
73677374
/// Uses a one-hop [`BlindedPath`] for the refund with [`ChannelManager::get_our_node_id`] as
@@ -7379,6 +7386,8 @@ where
73797386
/// Errors if a duplicate `payment_id` is provided given the caveats in the aforementioned link
73807387
/// or if `amount_msats` is invalid.
73817388
///
7389+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
7390+
///
73827391
/// [`Refund`]: crate::offers::refund::Refund
73837392
/// [`Bolt12Invoice`]: crate::offers::invoice::Bolt12Invoice
73847393
/// [`Bolt12Invoice::payment_paths`]: crate::offers::invoice::Bolt12Invoice::payment_paths
@@ -7421,6 +7430,9 @@ where
74217430
/// - `amount_msats` if overpaying what is required for the given `quantity` is desired, and
74227431
/// - `payer_note` for [`InvoiceRequest::payer_note`].
74237432
///
7433+
/// If `max_total_routing_fee_msat` is not specified, The default from
7434+
/// [`RouteParameters::from_payment_params_and_value`] is applied.
7435+
///
74247436
/// # Payment
74257437
///
74267438
/// The provided `payment_id` is used to ensure that only one invoice is paid for the request
@@ -8961,10 +8973,10 @@ where
89618973
match invoice.sign(|invoice| self.node_signer.sign_bolt12_invoice(invoice)) {
89628974
Ok(invoice) => Ok(OffersMessage::Invoice(invoice)),
89638975
Err(SignError::Signing(())) => Err(OffersMessage::InvoiceError(
8964-
InvoiceError::from_str("Failed signing invoice")
8976+
InvoiceError::from_string("Failed signing invoice".to_string())
89658977
)),
89668978
Err(SignError::Verification(_)) => Err(OffersMessage::InvoiceError(
8967-
InvoiceError::from_str("Failed invoice signature verification")
8979+
InvoiceError::from_string("Failed invoice signature verification".to_string())
89688980
)),
89698981
});
89708982
match response {
@@ -8980,15 +8992,15 @@ where
89808992
OffersMessage::Invoice(invoice) => {
89818993
match invoice.verify(expanded_key, secp_ctx) {
89828994
Err(()) => {
8983-
Some(OffersMessage::InvoiceError(InvoiceError::from_str("Unrecognized invoice")))
8995+
Some(OffersMessage::InvoiceError(InvoiceError::from_string("Unrecognized invoice".to_owned())))
89848996
},
89858997
Ok(_) if invoice.invoice_features().requires_unknown_bits_from(&self.bolt12_invoice_features()) => {
89868998
Some(OffersMessage::InvoiceError(Bolt12SemanticError::UnknownRequiredFeatures.into()))
89878999
},
89889000
Ok(payment_id) => {
89899001
if let Err(e) = self.send_payment_for_bolt12_invoice(&invoice, payment_id) {
89909002
log_trace!(self.logger, "Failed paying invoice: {:?}", e);
8991-
Some(OffersMessage::InvoiceError(InvoiceError::from_str(&format!("{:?}", e))))
9003+
Some(OffersMessage::InvoiceError(InvoiceError::from_string(format!("{:?}", e))))
89929004
} else {
89939005
None
89949006
}

lightning/src/ln/outbound_payment.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,6 @@ impl OutboundPayments {
762762
}
763763
}
764764

765-
#[allow(unused)]
766765
pub(super) fn send_payment_for_bolt12_invoice<R: Deref, ES: Deref, NS: Deref, IH, SP, L: Deref>(
767766
&self, invoice: &Bolt12Invoice, payment_id: PaymentId, router: &R,
768767
first_hops: Vec<ChannelDetails>, inflight_htlcs: IH, entropy_source: &ES, node_signer: &NS,
@@ -779,7 +778,7 @@ impl OutboundPayments {
779778
SP: Fn(SendAlongPathArgs) -> Result<(), APIError>,
780779
{
781780
let payment_hash = invoice.payment_hash();
782-
let mut max_total_routing_fee_msat = None;
781+
let max_total_routing_fee_msat;
783782
match self.pending_outbound_payments.lock().unwrap().entry(payment_id) {
784783
hash_map::Entry::Occupied(entry) => match entry.get() {
785784
PendingOutboundPayment::AwaitingInvoice { retry_strategy, max_total_routing_fee_msat: max_total_fee, .. } => {
@@ -795,11 +794,12 @@ impl OutboundPayments {
795794
hash_map::Entry::Vacant(_) => return Err(Bolt12PaymentError::UnexpectedInvoice),
796795
};
797796

798-
let route_params = RouteParameters {
799-
payment_params: PaymentParameters::from_bolt12_invoice(&invoice),
800-
final_value_msat: invoice.amount_msats(),
801-
max_total_routing_fee_msat,
802-
};
797+
let pay_params = PaymentParameters::from_bolt12_invoice(&invoice);
798+
let amount_msat = invoice.amount_msats();
799+
let mut route_params = RouteParameters::from_payment_params_and_value(pay_params, amount_msat);
800+
if let Some(max_fee_msat) = max_total_routing_fee_msat {
801+
route_params.max_total_routing_fee_msat = Some(max_fee_msat);
802+
}
803803

804804
self.find_route_and_send_payment(
805805
payment_hash, payment_id, route_params, router, first_hops, &inflight_htlcs,

lightning/src/ln/payment_tests.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1871,7 +1871,7 @@ fn do_test_intercepted_payment(test: InterceptTest) {
18711871
let route_params = RouteParameters::from_payment_params_and_value(payment_params, amt_msat);
18721872
let route = get_route(
18731873
&nodes[0].node.get_our_node_id(), &route_params, &nodes[0].network_graph.read_only(), None,
1874-
nodes[0].logger, &scorer, &(), &random_seed_bytes
1874+
nodes[0].logger, &scorer, &Default::default(), &random_seed_bytes
18751875
).unwrap();
18761876

18771877
let (payment_hash, payment_secret) = nodes[2].node.create_inbound_payment(Some(amt_msat), 60 * 60, None).unwrap();

lightning/src/ln/peer_handler.rs

+8-3
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,15 @@ use crate::ln::ChannelId;
2424
use crate::ln::features::{InitFeatures, NodeFeatures};
2525
use crate::ln::msgs;
2626
use crate::ln::msgs::{ChannelMessageHandler, LightningError, SocketAddress, OnionMessageHandler, RoutingMessageHandler};
27+
#[cfg(not(c_bindings))]
2728
use crate::ln::channelmanager::{SimpleArcChannelManager, SimpleRefChannelManager};
2829
use crate::util::ser::{VecWriter, Writeable, Writer};
2930
use crate::ln::peer_channel_encryptor::{PeerChannelEncryptor,NextNoiseStep};
3031
use crate::ln::wire;
3132
use crate::ln::wire::{Encode, Type};
32-
use crate::onion_message::{CustomOnionMessageHandler, OffersMessage, OffersMessageHandler, OnionMessageContents, PendingOnionMessage, SimpleArcOnionMessenger, SimpleRefOnionMessenger};
33+
#[cfg(not(c_bindings))]
34+
use crate::onion_message::{SimpleArcOnionMessenger, SimpleRefOnionMessenger};
35+
use crate::onion_message::{CustomOnionMessageHandler, OffersMessage, OffersMessageHandler, OnionMessageContents, PendingOnionMessage};
3336
use crate::routing::gossip::{NetworkGraph, P2PGossipSync, NodeId, NodeAlias};
3437
use crate::util::atomic_counter::AtomicCounter;
3538
use crate::util::logger::Logger;
@@ -608,7 +611,8 @@ impl Peer {
608611
/// SimpleRefPeerManager is the more appropriate type. Defining these type aliases prevents
609612
/// issues such as overly long function definitions.
610613
///
611-
/// This is not exported to bindings users as `Arc`s don't make sense in bindings.
614+
/// This is not exported to bindings users as type aliases aren't supported in most languages.
615+
#[cfg(not(c_bindings))]
612616
pub type SimpleArcPeerManager<SD, M, T, F, C, L> = PeerManager<
613617
SD,
614618
Arc<SimpleArcChannelManager<M, T, F, L>>,
@@ -626,7 +630,8 @@ pub type SimpleArcPeerManager<SD, M, T, F, C, L> = PeerManager<
626630
/// But if this is not necessary, using a reference is more efficient. Defining these type aliases
627631
/// helps with issues such as long function definitions.
628632
///
629-
/// This is not exported to bindings users as general type aliases don't make sense in bindings.
633+
/// This is not exported to bindings users as type aliases aren't supported in most languages.
634+
#[cfg(not(c_bindings))]
630635
pub type SimpleRefPeerManager<
631636
'a, 'b, 'c, 'd, 'e, 'f, 'logger, 'h, 'i, 'j, 'graph, 'k, SD, M, T, F, C, L
632637
> = PeerManager<

lightning/src/offers/invoice_error.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ pub struct ErroneousField {
5050

5151
impl InvoiceError {
5252
/// Creates an [`InvoiceError`] with the given message.
53-
pub fn from_str(s: &str) -> Self {
53+
pub fn from_string(s: String) -> Self {
5454
Self {
5555
erroneous_field: None,
56-
message: UntrustedString(s.to_string()),
56+
message: UntrustedString(s),
5757
}
5858
}
5959
}

lightning/src/onion_message/messenger.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use crate::blinded_path::BlindedPath;
1919
use crate::blinded_path::message::{advance_path_by_one, ForwardTlvs, ReceiveTlvs};
2020
use crate::blinded_path::utils;
2121
use crate::sign::{EntropySource, KeysManager, NodeSigner, Recipient};
22+
#[cfg(not(c_bindings))]
2223
use crate::ln::channelmanager::{SimpleArcChannelManager, SimpleRefChannelManager};
2324
use crate::ln::features::{InitFeatures, NodeFeatures};
2425
use crate::ln::msgs::{self, OnionMessage, OnionMessageHandler};
@@ -712,10 +713,11 @@ where
712713
/// Useful for simplifying the parameters of [`SimpleArcChannelManager`] and
713714
/// [`SimpleArcPeerManager`]. See their docs for more details.
714715
///
715-
/// This is not exported to bindings users as `Arc`s don't make sense in bindings.
716+
/// This is not exported to bindings users as type aliases aren't supported in most languages.
716717
///
717718
/// [`SimpleArcChannelManager`]: crate::ln::channelmanager::SimpleArcChannelManager
718719
/// [`SimpleArcPeerManager`]: crate::ln::peer_handler::SimpleArcPeerManager
720+
#[cfg(not(c_bindings))]
719721
pub type SimpleArcOnionMessenger<M, T, F, L> = OnionMessenger<
720722
Arc<KeysManager>,
721723
Arc<KeysManager>,
@@ -728,10 +730,11 @@ pub type SimpleArcOnionMessenger<M, T, F, L> = OnionMessenger<
728730
/// Useful for simplifying the parameters of [`SimpleRefChannelManager`] and
729731
/// [`SimpleRefPeerManager`]. See their docs for more details.
730732
///
731-
/// This is not exported to bindings users as general type aliases don't make sense in bindings.
733+
/// This is not exported to bindings users as type aliases aren't supported in most languages.
732734
///
733735
/// [`SimpleRefChannelManager`]: crate::ln::channelmanager::SimpleRefChannelManager
734736
/// [`SimpleRefPeerManager`]: crate::ln::peer_handler::SimpleRefPeerManager
737+
#[cfg(not(c_bindings))]
735738
pub type SimpleRefOnionMessenger<
736739
'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, M, T, F, L
737740
> = OnionMessenger<

0 commit comments

Comments
 (0)