@@ -938,19 +938,20 @@ impl<S: MutinyStorage> NodeManager<S> {
938938 /// Poll the payjoin relay to maintain a payjoin session and create a payjoin proposal.
939939 pub async fn receive_payjoin (
940940 wallet : Arc < OnChainWallet < S > > ,
941+ stop : Arc < AtomicBool > ,
941942 mut enrolled : payjoin:: receive:: v2:: Enrolled ,
942943 ) -> Result < Txid , MutinyError > {
943944 let http_client = reqwest:: Client :: builder ( )
944945 //.danger_accept_invalid_certs(true) ? is tls unchecked :O
945946 . build ( )
946947 . unwrap ( ) ;
947948 let proposal: payjoin:: receive:: v2:: UncheckedProposal =
948- Self :: poll_for_fallback_psbt ( & http_client, & mut enrolled)
949+ Self :: poll_for_fallback_psbt ( stop , & http_client, & mut enrolled)
949950 . await
950951 . unwrap ( ) ;
951952 let payjoin_proposal = wallet. process_payjoin_proposal ( proposal) . unwrap ( ) ;
952953
953- let ( req, ohttp_ctx) = payjoin_proposal. extract_v2_req ( ) . unwrap ( ) ;
954+ let ( req, ohttp_ctx) = payjoin_proposal. extract_v2_req ( ) . unwrap ( ) ; // extraction failed
954955 let res = http_client
955956 . post ( req. url )
956957 . body ( req. body )
@@ -969,10 +970,14 @@ impl<S: MutinyStorage> NodeManager<S> {
969970 }
970971
971972 async fn poll_for_fallback_psbt (
973+ stop : Arc < AtomicBool > ,
972974 client : & reqwest:: Client ,
973975 enroller : & mut payjoin:: receive:: v2:: Enrolled ,
974976 ) -> Result < payjoin:: receive:: v2:: UncheckedProposal , ( ) > {
975977 loop {
978+ if stop. load ( Ordering :: Relaxed ) {
979+ return Err ( ( ) ) ; // stopped
980+ }
976981 let ( req, context) = enroller. extract_req ( ) . unwrap ( ) ;
977982 let ohttp_response = client. post ( req. url ) . body ( req. body ) . send ( ) . await . unwrap ( ) ;
978983 let ohttp_response = ohttp_response. bytes ( ) . await . unwrap ( ) ;
0 commit comments