@@ -565,36 +565,38 @@ where
565565 } ,
566566 }
567567 } ,
568- LSPSMessage :: LSPS5 ( msg @ LSPS5Message :: Request ( .. ) ) => {
568+ LSPSMessage :: LSPS5 ( ref msg @ LSPS5Message :: Request ( _ , ref req ) ) => {
569569 match & self . lsps5_service_handler {
570570 Some ( lsps5_service_handler) => {
571- let lsps2_has_active_requests = self
572- . lsps2_service_handler
573- . as_ref ( )
574- . map_or ( false , |h| h. has_active_requests ( sender_node_id) ) ;
575- #[ cfg( lsps1_service) ]
576- let lsps1_has_active_requests = self
577- . lsps1_service_handler
578- . as_ref ( )
579- . map_or ( false , |h| h. has_active_requests ( sender_node_id) ) ;
580- #[ cfg( not( lsps1_service) ) ]
581- let lsps1_has_active_requests = false ;
582-
583- if !lsps5_service_handler. can_accept_request (
584- sender_node_id,
585- lsps2_has_active_requests,
586- lsps1_has_active_requests,
587- ) {
588- return Err ( LightningError {
589- err : format ! (
590- "Rejecting LSPS5 request from {:?} without prior activity (requires open channel or active LSPS1 or LSPS2 flow)" ,
591- sender_node_id
592- ) ,
593- action : ErrorAction :: IgnoreAndLog ( Level :: Debug ) ,
594- } ) ;
571+ if req. is_state_allocating ( ) {
572+ let lsps2_has_active_requests = self
573+ . lsps2_service_handler
574+ . as_ref ( )
575+ . map_or ( false , |h| h. has_active_requests ( sender_node_id) ) ;
576+ #[ cfg( lsps1_service) ]
577+ let lsps1_has_active_requests = self
578+ . lsps1_service_handler
579+ . as_ref ( )
580+ . map_or ( false , |h| h. has_active_requests ( sender_node_id) ) ;
581+ #[ cfg( not( lsps1_service) ) ]
582+ let lsps1_has_active_requests = false ;
583+
584+ if !lsps5_service_handler. can_accept_request (
585+ sender_node_id,
586+ lsps2_has_active_requests,
587+ lsps1_has_active_requests,
588+ ) {
589+ return Err ( LightningError {
590+ err : format ! (
591+ "Rejecting LSPS5 request from {:?} without prior activity (requires open channel or active LSPS1 or LSPS2 flow)" ,
592+ sender_node_id
593+ ) ,
594+ action : ErrorAction :: IgnoreAndLog ( Level :: Debug ) ,
595+ } ) ;
596+ }
595597 }
596598
597- lsps5_service_handler. handle_message ( msg, sender_node_id) ?;
599+ lsps5_service_handler. handle_message ( msg. clone ( ) , sender_node_id) ?;
598600 } ,
599601 None => {
600602 return Err ( LightningError { err : format ! ( "Received LSPS5 request message without LSPS5 service handler configured. From node = {:?}" , sender_node_id) , action : ErrorAction :: IgnoreAndLog ( Level :: Debug ) } ) ;
0 commit comments