Skip to content

Commit 94573dd

Browse files
committed
Rename OnionMessageContents
In preparation for needing the name OnionMessageContents for a trait to bound methods, rename it to ParsedOnionMessageContents. In the next commit, it's use will be limited to reading only, and the new trait will be a bound on method parameters instead.
1 parent 81c6147 commit 94573dd

File tree

4 files changed

+42
-42
lines changed

4 files changed

+42
-42
lines changed

lightning/src/onion_message/functional_tests.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::ln::msgs::{self, DecodeError, OnionMessageHandler};
1515
use crate::sign::{NodeSigner, Recipient};
1616
use crate::util::ser::{FixedLengthReader, LengthReadable, Writeable, Writer};
1717
use crate::util::test_utils;
18-
use super::{CustomOnionMessageContents, CustomOnionMessageHandler, Destination, MessageRouter, OffersMessage, OffersMessageHandler, OnionMessageContents, OnionMessagePath, OnionMessenger, SendError};
18+
use super::{CustomOnionMessageContents, CustomOnionMessageHandler, Destination, MessageRouter, OffersMessage, OffersMessageHandler, ParsedOnionMessageContents, OnionMessagePath, OnionMessenger, SendError};
1919

2020
use bitcoin::network::constants::Network;
2121
use bitcoin::secp256k1::{PublicKey, Secp256k1, SecretKey};
@@ -196,7 +196,7 @@ fn pass_along_path(path: &Vec<MessengerNode>) {
196196
#[test]
197197
fn one_hop() {
198198
let nodes = create_nodes(2);
199-
let test_msg = OnionMessageContents::Custom(TestCustomMessage::Response);
199+
let test_msg = ParsedOnionMessageContents::Custom(TestCustomMessage::Response);
200200

201201
let path = OnionMessagePath {
202202
intermediate_nodes: vec![],
@@ -210,7 +210,7 @@ fn one_hop() {
210210
#[test]
211211
fn two_unblinded_hops() {
212212
let nodes = create_nodes(3);
213-
let test_msg = OnionMessageContents::Custom(TestCustomMessage::Response);
213+
let test_msg = ParsedOnionMessageContents::Custom(TestCustomMessage::Response);
214214

215215
let path = OnionMessagePath {
216216
intermediate_nodes: vec![nodes[1].get_node_pk()],
@@ -224,7 +224,7 @@ fn two_unblinded_hops() {
224224
#[test]
225225
fn two_unblinded_two_blinded() {
226226
let nodes = create_nodes(5);
227-
let test_msg = OnionMessageContents::Custom(TestCustomMessage::Response);
227+
let test_msg = ParsedOnionMessageContents::Custom(TestCustomMessage::Response);
228228

229229
let secp_ctx = Secp256k1::new();
230230
let blinded_path = BlindedPath::new_for_message(&[nodes[3].get_node_pk(), nodes[4].get_node_pk()], &*nodes[4].keys_manager, &secp_ctx).unwrap();
@@ -241,7 +241,7 @@ fn two_unblinded_two_blinded() {
241241
#[test]
242242
fn three_blinded_hops() {
243243
let nodes = create_nodes(4);
244-
let test_msg = OnionMessageContents::Custom(TestCustomMessage::Response);
244+
let test_msg = ParsedOnionMessageContents::Custom(TestCustomMessage::Response);
245245

246246
let secp_ctx = Secp256k1::new();
247247
let blinded_path = BlindedPath::new_for_message(&[nodes[1].get_node_pk(), nodes[2].get_node_pk(), nodes[3].get_node_pk()], &*nodes[3].keys_manager, &secp_ctx).unwrap();
@@ -259,7 +259,7 @@ fn three_blinded_hops() {
259259
fn too_big_packet_error() {
260260
// Make sure we error as expected if a packet is too big to send.
261261
let nodes = create_nodes(2);
262-
let test_msg = OnionMessageContents::Custom(TestCustomMessage::Response);
262+
let test_msg = ParsedOnionMessageContents::Custom(TestCustomMessage::Response);
263263

264264
let hop_node_id = nodes[1].get_node_pk();
265265
let hops = vec![hop_node_id; 400];
@@ -285,7 +285,7 @@ fn we_are_intro_node() {
285285
destination: Destination::BlindedPath(blinded_path),
286286
};
287287

288-
nodes[0].messenger.send_onion_message(path, OnionMessageContents::Custom(test_msg.clone()), None).unwrap();
288+
nodes[0].messenger.send_onion_message(path, ParsedOnionMessageContents::Custom(test_msg.clone()), None).unwrap();
289289
nodes[2].custom_message_handler.expect_message(TestCustomMessage::Response);
290290
pass_along_path(&nodes);
291291

@@ -295,7 +295,7 @@ fn we_are_intro_node() {
295295
intermediate_nodes: vec![],
296296
destination: Destination::BlindedPath(blinded_path),
297297
};
298-
nodes[0].messenger.send_onion_message(path, OnionMessageContents::Custom(test_msg), None).unwrap();
298+
nodes[0].messenger.send_onion_message(path, ParsedOnionMessageContents::Custom(test_msg), None).unwrap();
299299
nodes[1].custom_message_handler.expect_message(TestCustomMessage::Response);
300300
nodes.remove(2);
301301
pass_along_path(&nodes);
@@ -315,7 +315,7 @@ fn invalid_blinded_path_error() {
315315
intermediate_nodes: vec![],
316316
destination: Destination::BlindedPath(blinded_path),
317317
};
318-
let err = nodes[0].messenger.send_onion_message(path, OnionMessageContents::Custom(test_msg.clone()), None).unwrap_err();
318+
let err = nodes[0].messenger.send_onion_message(path, ParsedOnionMessageContents::Custom(test_msg.clone()), None).unwrap_err();
319319
assert_eq!(err, SendError::TooFewBlindedHops);
320320

321321
// 1 hop
@@ -326,7 +326,7 @@ fn invalid_blinded_path_error() {
326326
intermediate_nodes: vec![],
327327
destination: Destination::BlindedPath(blinded_path),
328328
};
329-
let err = nodes[0].messenger.send_onion_message(path, OnionMessageContents::Custom(test_msg), None).unwrap_err();
329+
let err = nodes[0].messenger.send_onion_message(path, ParsedOnionMessageContents::Custom(test_msg), None).unwrap_err();
330330
assert_eq!(err, SendError::TooFewBlindedHops);
331331
}
332332

@@ -342,7 +342,7 @@ fn reply_path() {
342342
destination: Destination::Node(nodes[3].get_node_pk()),
343343
};
344344
let reply_path = BlindedPath::new_for_message(&[nodes[2].get_node_pk(), nodes[1].get_node_pk(), nodes[0].get_node_pk()], &*nodes[0].keys_manager, &secp_ctx).unwrap();
345-
nodes[0].messenger.send_onion_message(path, OnionMessageContents::Custom(test_msg.clone()), Some(reply_path)).unwrap();
345+
nodes[0].messenger.send_onion_message(path, ParsedOnionMessageContents::Custom(test_msg.clone()), Some(reply_path)).unwrap();
346346
nodes[3].custom_message_handler.expect_message(TestCustomMessage::Request);
347347
pass_along_path(&nodes);
348348
// Make sure the last node successfully decoded the reply path.
@@ -358,7 +358,7 @@ fn reply_path() {
358358
};
359359
let reply_path = BlindedPath::new_for_message(&[nodes[2].get_node_pk(), nodes[1].get_node_pk(), nodes[0].get_node_pk()], &*nodes[0].keys_manager, &secp_ctx).unwrap();
360360

361-
nodes[0].messenger.send_onion_message(path, OnionMessageContents::Custom(test_msg), Some(reply_path)).unwrap();
361+
nodes[0].messenger.send_onion_message(path, ParsedOnionMessageContents::Custom(test_msg), Some(reply_path)).unwrap();
362362
nodes[3].custom_message_handler.expect_message(TestCustomMessage::Request);
363363
pass_along_path(&nodes);
364364

@@ -384,7 +384,7 @@ fn invalid_custom_message_type() {
384384
fn write<W: Writer>(&self, _w: &mut W) -> Result<(), io::Error> { unreachable!() }
385385
}
386386

387-
let test_msg = OnionMessageContents::Custom(InvalidCustomMessage {});
387+
let test_msg = ParsedOnionMessageContents::Custom(InvalidCustomMessage {});
388388
let path = OnionMessagePath {
389389
intermediate_nodes: vec![],
390390
destination: Destination::Node(nodes[1].get_node_pk()),
@@ -402,9 +402,9 @@ fn peer_buffer_full() {
402402
destination: Destination::Node(nodes[1].get_node_pk()),
403403
};
404404
for _ in 0..188 { // Based on MAX_PER_PEER_BUFFER_SIZE in OnionMessenger
405-
nodes[0].messenger.send_onion_message(path.clone(), OnionMessageContents::Custom(test_msg.clone()), None).unwrap();
405+
nodes[0].messenger.send_onion_message(path.clone(), ParsedOnionMessageContents::Custom(test_msg.clone()), None).unwrap();
406406
}
407-
let err = nodes[0].messenger.send_onion_message(path, OnionMessageContents::Custom(test_msg), None).unwrap_err();
407+
let err = nodes[0].messenger.send_onion_message(path, ParsedOnionMessageContents::Custom(test_msg), None).unwrap_err();
408408
assert_eq!(err, SendError::BufferFull);
409409
}
410410

@@ -425,7 +425,7 @@ fn many_hops() {
425425
intermediate_nodes,
426426
destination: Destination::Node(nodes[num_nodes-1].get_node_pk()),
427427
};
428-
nodes[0].messenger.send_onion_message(path, OnionMessageContents::Custom(test_msg), None).unwrap();
428+
nodes[0].messenger.send_onion_message(path, ParsedOnionMessageContents::Custom(test_msg), None).unwrap();
429429
nodes[num_nodes-1].custom_message_handler.expect_message(TestCustomMessage::Response);
430430
pass_along_path(&nodes);
431431
}

lightning/src/onion_message/messenger.rs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use crate::ln::features::{InitFeatures, NodeFeatures};
2323
use crate::ln::msgs::{self, OnionMessage, OnionMessageHandler};
2424
use crate::ln::onion_utils;
2525
use crate::ln::peer_handler::IgnoringMessageHandler;
26-
pub use super::packet::{CustomOnionMessageContents, OnionMessageContents};
26+
pub use super::packet::{CustomOnionMessageContents, ParsedOnionMessageContents};
2727
use super::offers::OffersMessageHandler;
2828
use super::packet::{BIG_PACKET_HOP_DATA_LEN, ForwardControlTlvs, Packet, Payload, ReceiveControlTlvs, SMALL_PACKET_HOP_DATA_LEN};
2929
use crate::util::logger::Logger;
@@ -60,7 +60,7 @@ use crate::prelude::*;
6060
/// # use lightning::blinded_path::BlindedPath;
6161
/// # use lightning::sign::KeysManager;
6262
/// # use lightning::ln::peer_handler::IgnoringMessageHandler;
63-
/// # use lightning::onion_message::{CustomOnionMessageContents, Destination, MessageRouter, OnionMessageContents, OnionMessagePath, OnionMessenger};
63+
/// # use lightning::onion_message::{CustomOnionMessageContents, Destination, MessageRouter, ParsedOnionMessageContents, OnionMessagePath, OnionMessenger};
6464
/// # use lightning::util::logger::{Logger, Record};
6565
/// # use lightning::util::ser::{Writeable, Writer};
6666
/// # use lightning::io;
@@ -114,7 +114,7 @@ use crate::prelude::*;
114114
/// };
115115
/// let reply_path = None;
116116
/// # let your_custom_message = YourCustomMessage {};
117-
/// let message = OnionMessageContents::Custom(your_custom_message);
117+
/// let message = ParsedOnionMessageContents::Custom(your_custom_message);
118118
/// onion_messenger.send_onion_message(path, message, reply_path);
119119
///
120120
/// // Create a blinded path to yourself, for someone to send an onion message to.
@@ -129,7 +129,7 @@ use crate::prelude::*;
129129
/// };
130130
/// let reply_path = None;
131131
/// # let your_custom_message = YourCustomMessage {};
132-
/// let message = OnionMessageContents::Custom(your_custom_message);
132+
/// let message = ParsedOnionMessageContents::Custom(your_custom_message);
133133
/// onion_messenger.send_onion_message(path, message, reply_path);
134134
/// ```
135135
///
@@ -260,7 +260,7 @@ pub enum PeeledOnion<CM: CustomOnionMessageContents> {
260260
/// Forwarded onion, with the next node id and a new onion
261261
Forward(PublicKey, OnionMessage),
262262
/// Received onion message, with decrypted contents, path_id, and reply path
263-
Receive(OnionMessageContents<CM>, Option<[u8; 32]>, Option<BlindedPath>)
263+
Receive(ParsedOnionMessageContents<CM>, Option<[u8; 32]>, Option<BlindedPath>)
264264
}
265265

266266
/// Creates an [`OnionMessage`] with the given `contents` for sending to the destination of
@@ -269,7 +269,8 @@ pub enum PeeledOnion<CM: CustomOnionMessageContents> {
269269
/// Returns both the node id of the peer to send the message to and the message itself.
270270
pub fn create_onion_message<ES: Deref, NS: Deref, T: CustomOnionMessageContents>(
271271
entropy_source: &ES, node_signer: &NS, secp_ctx: &Secp256k1<secp256k1::All>,
272-
path: OnionMessagePath, contents: OnionMessageContents<T>, reply_path: Option<BlindedPath>,
272+
path: OnionMessagePath, contents: ParsedOnionMessageContents<T>,
273+
reply_path: Option<BlindedPath>,
273274
) -> Result<(PublicKey, OnionMessage), SendError>
274275
where
275276
ES::Target: EntropySource,
@@ -452,7 +453,7 @@ where
452453
///
453454
/// See [`OnionMessenger`] for example usage.
454455
pub fn send_onion_message<T: CustomOnionMessageContents>(
455-
&self, path: OnionMessagePath, contents: OnionMessageContents<T>,
456+
&self, path: OnionMessagePath, contents: ParsedOnionMessageContents<T>,
456457
reply_path: Option<BlindedPath>
457458
) -> Result<(), SendError> {
458459
let (first_node_id, onion_msg) = create_onion_message(
@@ -471,7 +472,7 @@ where
471472
}
472473

473474
fn find_path_and_enqueue_onion_message<T: CustomOnionMessageContents>(
474-
&self, contents: OnionMessageContents<T>, destination: Destination,
475+
&self, contents: ParsedOnionMessageContents<T>, destination: Destination,
475476
log_suffix: fmt::Arguments
476477
) {
477478
let sender = match self.node_signer.get_node_id(Recipient::Node) {
@@ -557,13 +558,13 @@ where
557558
"Received an onion message with path_id {:02x?} and {} reply_path",
558559
path_id, if reply_path.is_some() { "a" } else { "no" });
559560
let response = match message {
560-
OnionMessageContents::Offers(msg) => {
561+
ParsedOnionMessageContents::Offers(msg) => {
561562
self.offers_handler.handle_message(msg)
562-
.map(|msg| OnionMessageContents::Offers(msg))
563+
.map(|msg| ParsedOnionMessageContents::Offers(msg))
563564
},
564-
OnionMessageContents::Custom(msg) => {
565+
ParsedOnionMessageContents::Custom(msg) => {
565566
self.custom_handler.handle_custom_message(msg)
566-
.map(|msg| OnionMessageContents::Custom(msg))
567+
.map(|msg| ParsedOnionMessageContents::Custom(msg))
567568
},
568569
};
569570
if let Some(response) = response {
@@ -684,7 +685,7 @@ pub type SimpleRefOnionMessenger<'a, 'b, 'c, L> = OnionMessenger<
684685
/// `unblinded_path` to the given `destination`.
685686
fn packet_payloads_and_keys<T: CustomOnionMessageContents, S: secp256k1::Signing + secp256k1::Verification>(
686687
secp_ctx: &Secp256k1<S>, unblinded_path: &[PublicKey], destination: Destination,
687-
message: OnionMessageContents<T>, mut reply_path: Option<BlindedPath>, session_priv: &SecretKey
688+
message: ParsedOnionMessageContents<T>, mut reply_path: Option<BlindedPath>, session_priv: &SecretKey
688689
) -> Result<(Vec<(Payload<T>, [u8; 32])>, Vec<onion_utils::OnionKeys>), secp256k1::Error> {
689690
let num_hops = unblinded_path.len() + destination.num_hops();
690691
let mut payloads = Vec::with_capacity(num_hops);

lightning/src/onion_message/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ mod packet;
2727
mod functional_tests;
2828

2929
// Re-export structs so they can be imported with just the `onion_message::` module prefix.
30-
pub use self::messenger::{CustomOnionMessageContents, CustomOnionMessageHandler, DefaultMessageRouter, Destination, MessageRouter, OnionMessageContents, OnionMessagePath, OnionMessenger, PeeledOnion, SendError, SimpleArcOnionMessenger, SimpleRefOnionMessenger};
30+
pub use self::messenger::{CustomOnionMessageContents, CustomOnionMessageHandler, DefaultMessageRouter, Destination, MessageRouter, ParsedOnionMessageContents, OnionMessagePath, OnionMessenger, PeeledOnion, SendError, SimpleArcOnionMessenger, SimpleRefOnionMessenger};
3131
pub use self::offers::{OffersMessage, OffersMessageHandler};
3232
pub use self::packet::Packet;
3333
pub(crate) use self::packet::ControlTlvs;

lightning/src/onion_message/packet.rs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -110,38 +110,37 @@ pub(super) enum Payload<T: CustomOnionMessageContents> {
110110
Receive {
111111
control_tlvs: ReceiveControlTlvs,
112112
reply_path: Option<BlindedPath>,
113-
message: OnionMessageContents<T>,
113+
message: ParsedOnionMessageContents<T>,
114114
}
115115
}
116116

117+
/// The contents of an onion message as read from the wire.
117118
#[derive(Debug)]
118-
/// The contents of an onion message. In the context of offers, this would be the invoice, invoice
119-
/// request, or invoice error.
120-
pub enum OnionMessageContents<T: CustomOnionMessageContents> {
119+
pub enum ParsedOnionMessageContents<T: CustomOnionMessageContents> {
121120
/// A message related to BOLT 12 Offers.
122121
Offers(OffersMessage),
123122
/// A custom onion message specified by the user.
124123
Custom(T),
125124
}
126125

127-
impl<T: CustomOnionMessageContents> OnionMessageContents<T> {
126+
impl<T: CustomOnionMessageContents> ParsedOnionMessageContents<T> {
128127
/// Returns the type that was used to decode the message payload.
129128
///
130129
/// This is not exported to bindings users as methods on non-cloneable enums are not currently exportable
131130
pub fn tlv_type(&self) -> u64 {
132131
match self {
133-
&OnionMessageContents::Offers(ref msg) => msg.tlv_type(),
134-
&OnionMessageContents::Custom(ref msg) => msg.tlv_type(),
132+
&ParsedOnionMessageContents::Offers(ref msg) => msg.tlv_type(),
133+
&ParsedOnionMessageContents::Custom(ref msg) => msg.tlv_type(),
135134
}
136135
}
137136
}
138137

139138
/// This is not exported to bindings users as methods on non-cloneable enums are not currently exportable
140-
impl<T: CustomOnionMessageContents> Writeable for OnionMessageContents<T> {
139+
impl<T: CustomOnionMessageContents> Writeable for ParsedOnionMessageContents<T> {
141140
fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
142141
match self {
143-
OnionMessageContents::Offers(msg) => Ok(msg.write(w)?),
144-
OnionMessageContents::Custom(msg) => Ok(msg.write(w)?),
142+
ParsedOnionMessageContents::Offers(msg) => Ok(msg.write(w)?),
143+
ParsedOnionMessageContents::Custom(msg) => Ok(msg.write(w)?),
145144
}
146145
}
147146
}
@@ -236,12 +235,12 @@ ReadableArgs<(SharedSecret, &H, &L)> for Payload<<H as CustomOnionMessageHandler
236235
match msg_type {
237236
tlv_type if OffersMessage::is_known_type(tlv_type) => {
238237
let msg = OffersMessage::read(msg_reader, (tlv_type, logger))?;
239-
message = Some(OnionMessageContents::Offers(msg));
238+
message = Some(ParsedOnionMessageContents::Offers(msg));
240239
Ok(true)
241240
},
242241
_ => match handler.read_custom_message(msg_type, msg_reader)? {
243242
Some(msg) => {
244-
message = Some(OnionMessageContents::Custom(msg));
243+
message = Some(ParsedOnionMessageContents::Custom(msg));
245244
Ok(true)
246245
},
247246
None => Ok(false),

0 commit comments

Comments
 (0)