@@ -1348,45 +1348,44 @@ where
1348
1348
& self , peer_state_lock : & mut MutexGuard < ' a , PeerState > , request_id : LSPSRequestId ,
1349
1349
counterparty_node_id : PublicKey , request : LSPS2Request ,
1350
1350
) -> ( Result < ( ) , LightningError > , Option < LSPSMessage > ) {
1351
- if self . total_pending_requests . load ( Ordering :: Relaxed ) >= MAX_TOTAL_PENDING_REQUESTS {
1352
- let response = LSPS2Response :: BuyError ( LSPSResponseError {
1351
+ let create_pending_request_limit_exceeded_response = | error_message : String | {
1352
+ let error_details = LSPSResponseError {
1353
1353
code : LSPS0_CLIENT_REJECTED_ERROR_CODE ,
1354
1354
message : "Reached maximum number of pending requests. Please try again later."
1355
1355
. to_string ( ) ,
1356
1356
data : None ,
1357
+ } ;
1358
+ let response = match & request {
1359
+ LSPS2Request :: GetInfo ( _) => LSPS2Response :: GetInfoError ( error_details) ,
1360
+ LSPS2Request :: Buy ( _) => LSPS2Response :: BuyError ( error_details) ,
1361
+ } ;
1362
+ let msg = Some ( LSPS2Message :: Response ( request_id. clone ( ) , response) . into ( ) ) ;
1363
+
1364
+ let result = Err ( LightningError {
1365
+ err : error_message,
1366
+ action : ErrorAction :: IgnoreAndLog ( Level :: Debug ) ,
1357
1367
} ) ;
1358
- let msg = Some ( LSPS2Message :: Response ( request_id, response) . into ( ) ) ;
1368
+ ( result, msg)
1369
+ } ;
1359
1370
1360
- let err = format ! (
1361
- "Peer {} reached maximum number of total pending requests: {}" ,
1362
- counterparty_node_id, MAX_TOTAL_PENDING_REQUESTS
1371
+ if self . total_pending_requests . load ( Ordering :: Relaxed ) >= MAX_TOTAL_PENDING_REQUESTS {
1372
+ let error_message = format ! (
1373
+ "Reached maximum number of total pending requests: {}" ,
1374
+ MAX_TOTAL_PENDING_REQUESTS
1363
1375
) ;
1364
- let result =
1365
- Err ( LightningError { err, action : ErrorAction :: IgnoreAndLog ( Level :: Debug ) } ) ;
1366
- return ( result, msg) ;
1376
+ return create_pending_request_limit_exceeded_response ( error_message) ;
1367
1377
}
1368
1378
1369
1379
if peer_state_lock. pending_requests_and_channels ( ) < MAX_PENDING_REQUESTS_PER_PEER {
1370
1380
peer_state_lock. pending_requests . insert ( request_id, request) ;
1371
1381
self . total_pending_requests . fetch_add ( 1 , Ordering :: Relaxed ) ;
1372
1382
( Ok ( ( ) ) , None )
1373
1383
} else {
1374
- let response = LSPS2Response :: BuyError ( LSPSResponseError {
1375
- code : LSPS0_CLIENT_REJECTED_ERROR_CODE ,
1376
- message : "Reached maximum number of pending requests. Please try again later."
1377
- . to_string ( ) ,
1378
- data : None ,
1379
- } ) ;
1380
- let msg = Some ( LSPS2Message :: Response ( request_id, response) . into ( ) ) ;
1381
-
1382
- let err = format ! (
1384
+ let error_message = format ! (
1383
1385
"Peer {} reached maximum number of pending requests: {}" ,
1384
1386
counterparty_node_id, MAX_PENDING_REQUESTS_PER_PEER
1385
1387
) ;
1386
- let result =
1387
- Err ( LightningError { err, action : ErrorAction :: IgnoreAndLog ( Level :: Debug ) } ) ;
1388
-
1389
- ( result, msg)
1388
+ create_pending_request_limit_exceeded_response ( error_message)
1390
1389
}
1391
1390
}
1392
1391
0 commit comments