@@ -852,19 +852,20 @@ impl<S: MutinyStorage> NodeManager<S> {
852852 /// Poll the payjoin relay to maintain a payjoin session and create a payjoin proposal.
853853 pub async fn receive_payjoin (
854854 wallet : Arc < OnChainWallet < S > > ,
855+ stop : Arc < AtomicBool > ,
855856 mut enrolled : payjoin:: receive:: v2:: Enrolled ,
856857 ) -> Result < Txid , MutinyError > {
857858 let http_client = reqwest:: Client :: builder ( )
858859 //.danger_accept_invalid_certs(true) ? is tls unchecked :O
859860 . build ( )
860861 . unwrap ( ) ;
861862 let proposal: payjoin:: receive:: v2:: UncheckedProposal =
862- Self :: poll_for_fallback_psbt ( & http_client, & mut enrolled)
863+ Self :: poll_for_fallback_psbt ( stop , & http_client, & mut enrolled)
863864 . await
864865 . unwrap ( ) ;
865866 let payjoin_proposal = wallet. process_payjoin_proposal ( proposal) . unwrap ( ) ;
866867
867- let ( req, ohttp_ctx) = payjoin_proposal. extract_v2_req ( ) . unwrap ( ) ;
868+ let ( req, ohttp_ctx) = payjoin_proposal. extract_v2_req ( ) . unwrap ( ) ; // extraction failed
868869 let res = http_client
869870 . post ( req. url )
870871 . body ( req. body )
@@ -883,10 +884,14 @@ impl<S: MutinyStorage> NodeManager<S> {
883884 }
884885
885886 async fn poll_for_fallback_psbt (
887+ stop : Arc < AtomicBool > ,
886888 client : & reqwest:: Client ,
887889 enroller : & mut payjoin:: receive:: v2:: Enrolled ,
888890 ) -> Result < payjoin:: receive:: v2:: UncheckedProposal , ( ) > {
889891 loop {
892+ if stop. load ( Ordering :: Relaxed ) {
893+ return Err ( ( ) ) ; // stopped
894+ }
890895 let ( req, context) = enroller. extract_req ( ) . unwrap ( ) ;
891896 let ohttp_response = client. post ( req. url ) . body ( req. body ) . send ( ) . await . unwrap ( ) ;
892897 let ohttp_response = ohttp_response. bytes ( ) . await . unwrap ( ) ;
0 commit comments