@@ -1772,20 +1772,48 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
1772
1772
// before they are handled.
1773
1773
if let wire:: Message :: StartBatch ( msg) = message {
1774
1774
if peer_lock. commitment_signed_batch . is_some ( ) {
1775
- log_debug ! ( logger, "Peer {} sent start_batch for channel {} before previous batch completed" , log_pubkey!( their_node_id) , & msg. channel_id) ;
1776
- return Err ( PeerHandleError { } . into ( ) ) ;
1775
+ let error = format ! ( "Peer {} sent start_batch for channel {} before previous batch completed" , log_pubkey!( their_node_id) , & msg. channel_id) ;
1776
+ log_debug ! ( logger, "{}" , error) ;
1777
+ return Err ( LightningError {
1778
+ err : error. clone ( ) ,
1779
+ action : msgs:: ErrorAction :: DisconnectPeerWithWarning {
1780
+ msg : msgs:: WarningMessage {
1781
+ channel_id : msg. channel_id ,
1782
+ data : error,
1783
+ } ,
1784
+ } ,
1785
+ } . into ( ) ) ;
1777
1786
}
1778
1787
1779
1788
let batch_size = msg. batch_size as usize ;
1780
1789
if batch_size <= 1 {
1781
- log_debug ! ( logger, "Peer {} sent start_batch for channel {} not strictly greater than 1" , log_pubkey!( their_node_id) , & msg. channel_id) ;
1782
- return Err ( PeerHandleError { } . into ( ) ) ;
1790
+ let error = format ! ( "Peer {} sent start_batch for channel {} not strictly greater than 1" , log_pubkey!( their_node_id) , & msg. channel_id) ;
1791
+ log_debug ! ( logger, "{}" , error) ;
1792
+ return Err ( LightningError {
1793
+ err : error. clone ( ) ,
1794
+ action : msgs:: ErrorAction :: SendWarningMessage {
1795
+ msg : msgs:: WarningMessage {
1796
+ channel_id : msg. channel_id ,
1797
+ data : error,
1798
+ } ,
1799
+ log_level : Level :: Debug ,
1800
+ } ,
1801
+ } . into ( ) ) ;
1783
1802
}
1784
1803
1785
1804
const COMMITMENT_SIGNED_BATCH_LIMIT : usize = 20 ;
1786
1805
if batch_size > COMMITMENT_SIGNED_BATCH_LIMIT {
1787
- log_debug ! ( logger, "Peer {} sent start_batch for channel {} exceeding the limit" , log_pubkey!( their_node_id) , & msg. channel_id) ;
1788
- return Err ( PeerHandleError { } . into ( ) ) ;
1806
+ let error = format ! ( "Peer {} sent start_batch for channel {} exceeding the limit" , log_pubkey!( their_node_id) , & msg. channel_id) ;
1807
+ log_debug ! ( logger, "{}" , error) ;
1808
+ return Err ( LightningError {
1809
+ err : error. clone ( ) ,
1810
+ action : msgs:: ErrorAction :: DisconnectPeerWithWarning {
1811
+ msg : msgs:: WarningMessage {
1812
+ channel_id : msg. channel_id ,
1813
+ data : error,
1814
+ } ,
1815
+ } ,
1816
+ } . into ( ) ) ;
1789
1817
}
1790
1818
1791
1819
peer_lock. commitment_signed_batch = Some ( ( msg. channel_id , batch_size, BTreeMap :: new ( ) ) ) ;
@@ -1796,8 +1824,17 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
1796
1824
if let wire:: Message :: CommitmentSigned ( msg) = message {
1797
1825
if let Some ( ( channel_id, batch_size, buffer) ) = & mut peer_lock. commitment_signed_batch {
1798
1826
if msg. channel_id != * channel_id {
1799
- log_debug ! ( logger, "Peer {} sent batched commitment_signed for the wrong channel (expected: {}, actual: {})" , log_pubkey!( their_node_id) , channel_id, & msg. channel_id) ;
1800
- return Err ( PeerHandleError { } . into ( ) ) ;
1827
+ let error = format ! ( "Peer {} sent batched commitment_signed for the wrong channel (expected: {}, actual: {})" , log_pubkey!( their_node_id) , channel_id, & msg. channel_id) ;
1828
+ log_debug ! ( logger, "{}" , error) ;
1829
+ return Err ( LightningError {
1830
+ err : error. clone ( ) ,
1831
+ action : msgs:: ErrorAction :: DisconnectPeerWithWarning {
1832
+ msg : msgs:: WarningMessage {
1833
+ channel_id : msg. channel_id ,
1834
+ data : error,
1835
+ } ,
1836
+ } ,
1837
+ } . into ( ) ) ;
1801
1838
}
1802
1839
1803
1840
let funding_txid = match msg. funding_txid {
0 commit comments