Skip to content

Commit b7d1e3c

Browse files
committed
f - drop MessageBatchImpl::Unknown for StartBatch::message_type
1 parent a898cc6 commit b7d1e3c

File tree

2 files changed

+26
-15
lines changed

2 files changed

+26
-15
lines changed

lightning/src/ln/msgs.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,8 @@ pub struct StartBatch {
696696
pub channel_id: ChannelId,
697697
/// The number of messages to follow.
698698
pub batch_size: u16,
699+
/// The type of all messages expected in the batch.
700+
pub message_type: Option<u16>,
699701
}
700702

701703
/// An [`update_add_htlc`] message to be sent to or received from a peer.
@@ -3082,7 +3084,9 @@ impl_writeable_msg!(PeerStorageRetrieval, { data }, {});
30823084
impl_writeable_msg!(StartBatch, {
30833085
channel_id,
30843086
batch_size
3085-
}, {});
3087+
}, {
3088+
(1, message_type, option)
3089+
});
30863090

30873091
// Note that this is written as a part of ChannelManager objects, and thus cannot change its
30883092
// serialization format in a way which assumes we know the total serialized length/message end

lightning/src/ln/peer_handler.rs

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -551,10 +551,6 @@ struct MessageBatch {
551551

552552
/// The representation of the message batch, which may different for each message type.
553553
enum MessageBatchImpl {
554-
/// Used before the first message in the batch is received, since the type of messages in the
555-
/// batch is not yet known.
556-
Unknown,
557-
558554
/// A batch of `commitment_signed` messages, where each has a unique `funding_txid`.
559555
CommitmentSigned(BTreeMap<Txid, msgs::CommitmentSigned>),
560556
}
@@ -1838,10 +1834,29 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
18381834
}.into());
18391835
}
18401836

1837+
let messages = match msg.message_type {
1838+
Some(message_type) if message_type == msgs::CommitmentSigned::TYPE => {
1839+
MessageBatchImpl::CommitmentSigned(BTreeMap::new())
1840+
},
1841+
_ => {
1842+
let error = format!("Peer {} sent start_batch for channel {} without a known message type", log_pubkey!(their_node_id), &msg.channel_id);
1843+
log_debug!(logger, "{}", error);
1844+
return Err(LightningError {
1845+
err: error.clone(),
1846+
action: msgs::ErrorAction::DisconnectPeerWithWarning {
1847+
msg: msgs::WarningMessage {
1848+
channel_id: msg.channel_id,
1849+
data: error,
1850+
},
1851+
},
1852+
}.into());
1853+
},
1854+
};
1855+
18411856
let message_batch = MessageBatch {
18421857
channel_id: msg.channel_id,
18431858
batch_size,
1844-
messages: MessageBatchImpl::Unknown,
1859+
messages,
18451860
};
18461861
peer_lock.message_batch = Some(message_batch);
18471862

@@ -1850,12 +1865,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
18501865

18511866
if let wire::Message::CommitmentSigned(msg) = message {
18521867
if let Some(message_batch) = &mut peer_lock.message_batch {
1853-
if let MessageBatchImpl::Unknown = message_batch.messages {
1854-
message_batch.messages = MessageBatchImpl::CommitmentSigned(BTreeMap::new());
1855-
}
1856-
18571868
let buffer = match &mut message_batch.messages {
1858-
MessageBatchImpl::Unknown => unreachable!(),
18591869
MessageBatchImpl::CommitmentSigned(ref mut messages) => messages,
18601870
};
18611871

@@ -1892,7 +1902,6 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
18921902
if buffer.len() == message_batch.batch_size {
18931903
let MessageBatch { channel_id, batch_size: _, messages } = peer_lock.message_batch.take().expect("batch should have been inserted");
18941904
let batch = match messages {
1895-
MessageBatchImpl::Unknown => unreachable!(),
18961905
MessageBatchImpl::CommitmentSigned(messages) => messages,
18971906
};
18981907

@@ -1905,9 +1914,6 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
19051914
}
19061915
} else if let Some(message_batch) = &peer_lock.message_batch {
19071916
match message_batch.messages {
1908-
MessageBatchImpl::Unknown => {
1909-
log_debug!(logger, "Peer {} sent an unexpected message for a batch", log_pubkey!(their_node_id));
1910-
},
19111917
MessageBatchImpl::CommitmentSigned(_) => {
19121918
log_debug!(logger, "Peer {} sent an unexpected message for a commitment_signed batch", log_pubkey!(their_node_id));
19131919
},
@@ -2512,6 +2518,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
25122518
let msg = msgs::StartBatch {
25132519
channel_id: *channel_id,
25142520
batch_size: commitment_signed.len() as u16,
2521+
message_type: Some(msgs::CommitmentSigned::TYPE),
25152522
};
25162523
self.enqueue_message(&mut *peer, &msg);
25172524
}

0 commit comments

Comments
 (0)