@@ -551,10 +551,6 @@ struct MessageBatch {
551551
552552/// The representation of the message batch, which may different for each message type.
553553enum 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