@@ -162,9 +162,12 @@ where
162162 . or_insert ( Mutex :: new ( PeerState :: default ( ) ) ) ;
163163 let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
164164
165- peer_state_lock
166- . pending_requests
167- . insert ( request_id. clone ( ) , LSPS1Request :: CreateOrder ( params. clone ( ) ) ) ;
165+ let request = LSPS1Request :: CreateOrder ( params. clone ( ) ) ;
166+ peer_state_lock. register_request ( request_id. clone ( ) , request) . map_err ( |e| {
167+ let err = format ! ( "Failed to handle request due to: {}" , e) ;
168+ let action = ErrorAction :: IgnoreAndLog ( Level :: Error ) ;
169+ LightningError { err, action }
170+ } ) ?;
168171 }
169172
170173 event_queue_notifier. enqueue ( LSPS1ServiceEvent :: RequestForPaymentDetails {
@@ -191,11 +194,15 @@ where
191194 match outer_state_lock. get ( counterparty_node_id) {
192195 Some ( inner_state_lock) => {
193196 let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
194-
195- match peer_state_lock. pending_requests . remove ( & request_id) {
196- Some ( LSPS1Request :: CreateOrder ( params) ) => {
197+ let request = peer_state_lock. remove_request ( & request_id) . map_err ( |e| {
198+ debug_assert ! ( false , "Failed to send response due to: {}" , e) ;
199+ let err = format ! ( "Failed to send response due to: {}" , e) ;
200+ APIError :: APIMisuseError { err }
201+ } ) ?;
202+
203+ match request {
204+ LSPS1Request :: CreateOrder ( params) => {
197205 let order_id = self . generate_order_id ( ) ;
198-
199206 peer_state_lock. new_order (
200207 order_id. clone ( ) ,
201208 params. order . clone ( ) ,
@@ -206,6 +213,9 @@ where
206213 let response = LSPS1Response :: CreateOrder ( LSPS1CreateOrderResponse {
207214 order : params. order ,
208215 order_id,
216+
217+ // TODO, we need to set this in the peer/channel state, and send the
218+ // set value here:
209219 order_state : LSPS1OrderState :: Created ,
210220 created_at,
211221 payment,
@@ -215,14 +225,22 @@ where
215225 message_queue_notifier. enqueue ( counterparty_node_id, msg) ;
216226 Ok ( ( ) )
217227 } ,
218-
219- _ => Err ( APIError :: APIMisuseError {
220- err : format ! ( "No pending buy request for request_id: {:?}" , request_id) ,
221- } ) ,
228+ t => {
229+ debug_assert ! (
230+ false ,
231+ "Failed to send response due to unexpected request type: {:?}" ,
232+ t
233+ ) ;
234+ let err = format ! (
235+ "Failed to send response due to unexpected request type: {:?}" ,
236+ t
237+ ) ;
238+ return Err ( APIError :: APIMisuseError { err } ) ;
239+ } ,
222240 }
223241 } ,
224242 None => Err ( APIError :: APIMisuseError {
225- err : format ! ( "No state for the counterparty exists: {:? }" , counterparty_node_id) ,
243+ err : format ! ( "No state for the counterparty exists: {}" , counterparty_node_id) ,
226244 } ) ,
227245 }
228246 }
@@ -236,9 +254,13 @@ where
236254 match outer_state_lock. get ( counterparty_node_id) {
237255 Some ( inner_state_lock) => {
238256 let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
239- peer_state_lock
240- . pending_requests
241- . insert ( request_id. clone ( ) , LSPS1Request :: GetOrder ( params. clone ( ) ) ) ;
257+
258+ let request = LSPS1Request :: GetOrder ( params. clone ( ) ) ;
259+ peer_state_lock. register_request ( request_id. clone ( ) , request) . map_err ( |e| {
260+ let err = format ! ( "Failed to handle request due to: {}" , e) ;
261+ let action = ErrorAction :: IgnoreAndLog ( Level :: Error ) ;
262+ LightningError { err, action }
263+ } ) ?;
242264
243265 event_queue_notifier. enqueue ( LSPS1ServiceEvent :: CheckPaymentConfirmation {
244266 request_id,
0 commit comments