@@ -739,19 +739,20 @@ impl<S: MutinyStorage> NodeManager<S> {
739739 /// Poll the payjoin relay to maintain a payjoin session and create a payjoin proposal.
740740 pub async fn receive_payjoin (
741741 wallet : Arc < OnChainWallet < S > > ,
742+ stop : Arc < AtomicBool > ,
742743 mut enrolled : payjoin:: receive:: v2:: Enrolled ,
743744 ) -> Result < Txid , MutinyError > {
744745 let http_client = reqwest:: Client :: builder ( )
745746 //.danger_accept_invalid_certs(true) ? is tls unchecked :O
746747 . build ( )
747748 . unwrap ( ) ;
748749 let proposal: payjoin:: receive:: v2:: UncheckedProposal =
749- Self :: poll_for_fallback_psbt ( & http_client, & mut enrolled)
750+ Self :: poll_for_fallback_psbt ( stop , & http_client, & mut enrolled)
750751 . await
751752 . unwrap ( ) ;
752753 let payjoin_proposal = wallet. process_payjoin_proposal ( proposal) . unwrap ( ) ;
753754
754- let ( req, ohttp_ctx) = payjoin_proposal. extract_v2_req ( ) . unwrap ( ) ;
755+ let ( req, ohttp_ctx) = payjoin_proposal. extract_v2_req ( ) . unwrap ( ) ; // extraction failed
755756 let res = http_client
756757 . post ( req. url )
757758 . body ( req. body )
@@ -770,10 +771,14 @@ impl<S: MutinyStorage> NodeManager<S> {
770771 }
771772
772773 async fn poll_for_fallback_psbt (
774+ stop : Arc < AtomicBool > ,
773775 client : & reqwest:: Client ,
774776 enroller : & mut payjoin:: receive:: v2:: Enrolled ,
775777 ) -> Result < payjoin:: receive:: v2:: UncheckedProposal , ( ) > {
776778 loop {
779+ if stop. load ( Ordering :: Relaxed ) {
780+ return Err ( ( ) ) ; // stopped
781+ }
777782 let ( req, context) = enroller. extract_req ( ) . unwrap ( ) ;
778783 let ohttp_response = client. post ( req. url ) . body ( req. body ) . send ( ) . await . unwrap ( ) ;
779784 let ohttp_response = ohttp_response. bytes ( ) . await . unwrap ( ) ;
0 commit comments