@@ -22,9 +22,10 @@ use crate::sync::{Arc, Mutex, RwLock};
22
22
use lightning:: chain:: { self , BestBlock , Confirm , Filter , Listen } ;
23
23
use lightning:: ln:: channelmanager:: { AChannelManager , ChainParameters } ;
24
24
use lightning:: ln:: features:: { InitFeatures , NodeFeatures } ;
25
- use lightning:: ln:: msgs:: { ErrorAction , LightningError } ;
25
+ use lightning:: ln:: msgs:: { ErrorAction , ErrorMessage , LightningError } ;
26
26
use lightning:: ln:: peer_handler:: CustomMessageHandler ;
27
27
use lightning:: ln:: wire:: CustomMessageReader ;
28
+ use lightning:: ln:: ChannelId ;
28
29
use lightning:: sign:: EntropySource ;
29
30
use lightning:: util:: logger:: Level ;
30
31
use lightning:: util:: ser:: Readable ;
@@ -416,16 +417,18 @@ where
416
417
) -> Result < ( ) , lightning:: ln:: msgs:: LightningError > {
417
418
let message = {
418
419
let mut request_id_to_method_map = self . request_id_to_method_map . lock ( ) . unwrap ( ) ;
419
- LSPSMessage :: from_str_with_id_map ( & msg. payload , & mut request_id_to_method_map)
420
+ LSPSMessage :: from_str_with_id_map ( & msg. payload , & mut request_id_to_method_map) . map_err (
421
+ |_| {
422
+ self . pending_messages . enqueue ( sender_node_id, LSPSMessage :: Invalid ) ;
423
+ let err = format ! ( "Failed to deserialize invalid LSPS message." ) ;
424
+ let err_msg =
425
+ Some ( ErrorMessage { channel_id : ChannelId ( [ 0 ; 32 ] ) , data : err. clone ( ) } ) ;
426
+ LightningError { err, action : ErrorAction :: DisconnectPeer { msg : err_msg } }
427
+ } ,
428
+ ) ?
420
429
} ;
421
430
422
- match message {
423
- Ok ( msg) => self . handle_lsps_message ( msg, sender_node_id) ,
424
- Err ( _) => {
425
- self . pending_messages . enqueue ( sender_node_id, LSPSMessage :: Invalid ) ;
426
- Ok ( ( ) )
427
- }
428
- }
431
+ self . handle_lsps_message ( message, sender_node_id)
429
432
}
430
433
431
434
fn get_and_clear_pending_msg ( & self ) -> Vec < ( PublicKey , Self :: CustomMessage ) > {
0 commit comments