@@ -177,6 +177,8 @@ where
177177 fn handle_get_info_request (
178178 & self , request_id : LSPSRequestId , counterparty_node_id : & PublicKey ,
179179 ) -> Result < ( ) , LightningError > {
180+ let mut message_queue_notifier = self . pending_messages . notifier ( ) ;
181+
180182 let response = LSPS1Response :: GetInfo ( LSPS1GetInfoResponse {
181183 options : self
182184 . config
@@ -190,15 +192,17 @@ where
190192 } ) ;
191193
192194 let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
193- self . pending_messages . enqueue ( counterparty_node_id, msg) ;
195+ message_queue_notifier . enqueue ( counterparty_node_id, msg) ;
194196 Ok ( ( ) )
195197 }
196198
197199 fn handle_create_order_request (
198200 & self , request_id : LSPSRequestId , counterparty_node_id : & PublicKey ,
199201 params : LSPS1CreateOrderRequest ,
200202 ) -> Result < ( ) , LightningError > {
203+ let mut message_queue_notifier = self . pending_messages . notifier ( ) ;
201204 let event_queue_notifier = self . pending_events . notifier ( ) ;
205+
202206 if !is_valid ( & params. order , & self . config . supported_options . as_ref ( ) . unwrap ( ) ) {
203207 let response = LSPS1Response :: CreateOrderError ( LSPSResponseError {
204208 code : LSPS1_CREATE_ORDER_REQUEST_ORDER_MISMATCH_ERROR_CODE ,
@@ -209,7 +213,7 @@ where
209213 ) ) ,
210214 } ) ;
211215 let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
212- self . pending_messages . enqueue ( counterparty_node_id, msg) ;
216+ message_queue_notifier . enqueue ( counterparty_node_id, msg) ;
213217 return Err ( LightningError {
214218 err : format ! (
215219 "Client order does not match any supported options: {:?}" ,
@@ -250,66 +254,47 @@ where
250254 & self , request_id : LSPSRequestId , counterparty_node_id : & PublicKey ,
251255 payment : LSPS1PaymentInfo , created_at : LSPSDateTime ,
252256 ) -> Result < ( ) , APIError > {
253- let ( result, response) = {
254- let outer_state_lock = self . per_peer_state . read ( ) . unwrap ( ) ;
255-
256- match outer_state_lock. get ( counterparty_node_id) {
257- Some ( inner_state_lock) => {
258- let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
259-
260- match peer_state_lock. pending_requests . remove ( & request_id) {
261- Some ( LSPS1Request :: CreateOrder ( params) ) => {
262- let order_id = self . generate_order_id ( ) ;
263- let channel = OutboundCRChannel :: new (
264- params. order . clone ( ) ,
265- created_at. clone ( ) ,
266- order_id. clone ( ) ,
267- payment. clone ( ) ,
268- ) ;
269-
270- peer_state_lock. insert_outbound_channel ( order_id. clone ( ) , channel) ;
271-
272- let response = LSPS1Response :: CreateOrder ( LSPS1CreateOrderResponse {
273- order : params. order ,
274- order_id,
275- order_state : LSPS1OrderState :: Created ,
276- created_at,
277- payment,
278- channel : None ,
279- } ) ;
280-
281- ( Ok ( ( ) ) , Some ( response) )
282- } ,
283-
284- _ => (
285- Err ( APIError :: APIMisuseError {
286- err : format ! (
287- "No pending buy request for request_id: {:?}" ,
288- request_id
289- ) ,
290- } ) ,
291- None ,
292- ) ,
293- }
294- } ,
295- None => (
296- Err ( APIError :: APIMisuseError {
297- err : format ! (
298- "No state for the counterparty exists: {:?}" ,
299- counterparty_node_id
300- ) ,
301- } ) ,
302- None ,
303- ) ,
304- }
305- } ;
257+ let mut message_queue_notifier = self . pending_messages . notifier ( ) ;
306258
307- if let Some ( response) = response {
308- let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
309- self . pending_messages . enqueue ( counterparty_node_id, msg) ;
310- }
259+ let outer_state_lock = self . per_peer_state . read ( ) . unwrap ( ) ;
260+ match outer_state_lock. get ( counterparty_node_id) {
261+ Some ( inner_state_lock) => {
262+ let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
263+
264+ match peer_state_lock. pending_requests . remove ( & request_id) {
265+ Some ( LSPS1Request :: CreateOrder ( params) ) => {
266+ let order_id = self . generate_order_id ( ) ;
267+ let channel = OutboundCRChannel :: new (
268+ params. order . clone ( ) ,
269+ created_at. clone ( ) ,
270+ order_id. clone ( ) ,
271+ payment. clone ( ) ,
272+ ) ;
273+
274+ peer_state_lock. insert_outbound_channel ( order_id. clone ( ) , channel) ;
275+
276+ let response = LSPS1Response :: CreateOrder ( LSPS1CreateOrderResponse {
277+ order : params. order ,
278+ order_id,
279+ order_state : LSPS1OrderState :: Created ,
280+ created_at,
281+ payment,
282+ channel : None ,
283+ } ) ;
284+ let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
285+ message_queue_notifier. enqueue ( counterparty_node_id, msg) ;
286+ Ok ( ( ) )
287+ } ,
311288
312- result
289+ _ => Err ( APIError :: APIMisuseError {
290+ err : format ! ( "No pending buy request for request_id: {:?}" , request_id) ,
291+ } ) ,
292+ }
293+ } ,
294+ None => Err ( APIError :: APIMisuseError {
295+ err : format ! ( "No state for the counterparty exists: {:?}" , counterparty_node_id) ,
296+ } ) ,
297+ }
313298 }
314299
315300 fn handle_get_order_request (
@@ -376,54 +361,40 @@ where
376361 & self , request_id : LSPSRequestId , counterparty_node_id : PublicKey , order_id : LSPS1OrderId ,
377362 order_state : LSPS1OrderState , channel : Option < LSPS1ChannelInfo > ,
378363 ) -> Result < ( ) , APIError > {
379- let ( result, response) = {
380- let outer_state_lock = self . per_peer_state . read ( ) . unwrap ( ) ;
364+ let mut message_queue_notifier = self . pending_messages . notifier ( ) ;
381365
382- match outer_state_lock. get ( & counterparty_node_id) {
383- Some ( inner_state_lock) => {
384- let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
366+ let outer_state_lock = self . per_peer_state . read ( ) . unwrap ( ) ;
385367
386- if let Some ( outbound_channel) =
387- peer_state_lock. outbound_channels_by_order_id . get_mut ( & order_id)
388- {
389- let config = & outbound_channel. config ;
368+ match outer_state_lock. get ( & counterparty_node_id) {
369+ Some ( inner_state_lock) => {
370+ let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
390371
391- let response = LSPS1Response :: GetOrder ( LSPS1CreateOrderResponse {
392- order_id,
393- order : config. order . clone ( ) ,
394- order_state,
395- created_at : config. created_at . clone ( ) ,
396- payment : config. payment . clone ( ) ,
397- channel,
398- } ) ;
399- ( Ok ( ( ) ) , Some ( response) )
400- } else {
401- (
402- Err ( APIError :: APIMisuseError {
403- err : format ! ( "Channel with order_id {} not found" , order_id. 0 ) ,
404- } ) ,
405- None ,
406- )
407- }
408- } ,
409- None => (
372+ if let Some ( outbound_channel) =
373+ peer_state_lock. outbound_channels_by_order_id . get_mut ( & order_id)
374+ {
375+ let config = & outbound_channel. config ;
376+
377+ let response = LSPS1Response :: GetOrder ( LSPS1CreateOrderResponse {
378+ order_id,
379+ order : config. order . clone ( ) ,
380+ order_state,
381+ created_at : config. created_at . clone ( ) ,
382+ payment : config. payment . clone ( ) ,
383+ channel,
384+ } ) ;
385+ let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
386+ message_queue_notifier. enqueue ( & counterparty_node_id, msg) ;
387+ Ok ( ( ) )
388+ } else {
410389 Err ( APIError :: APIMisuseError {
411- err : format ! (
412- "No existing state with counterparty {}" ,
413- counterparty_node_id
414- ) ,
415- } ) ,
416- None ,
417- ) ,
418- }
419- } ;
420-
421- if let Some ( response) = response {
422- let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
423- self . pending_messages . enqueue ( & counterparty_node_id, msg) ;
390+ err : format ! ( "Channel with order_id {} not found" , order_id. 0 ) ,
391+ } )
392+ }
393+ } ,
394+ None => Err ( APIError :: APIMisuseError {
395+ err : format ! ( "No existing state with counterparty {}" , counterparty_node_id) ,
396+ } ) ,
424397 }
425-
426- result
427398 }
428399
429400 fn generate_order_id ( & self ) -> LSPS1OrderId {
0 commit comments