@@ -1045,11 +1045,11 @@ impl<S: MutinyStorage> NodeManager<S> {
10451045 . unwrap ( ) ;
10461046 let pj_uri = enrolled. fallback_target ( ) ;
10471047 log_debug ! ( self . logger, "{pj_uri}" ) ;
1048- let wallet = self . wallet . clone ( ) ;
10491048 // run await payjoin task in the background as it'll keep polling the relay
1049+ let wallet = self . wallet . clone ( ) ;
1050+ let stop = self . stop . clone ( ) ;
10501051 utils:: spawn ( async move {
1051- let wallet = wallet. clone ( ) ;
1052- let pj_txid = Self :: receive_payjoin ( wallet, enrolled) . await . unwrap ( ) ;
1052+ let pj_txid = Self :: receive_payjoin ( wallet, stop, enrolled) . await . unwrap ( ) ;
10531053 log:: info!( "Received payjoin txid: {}" , pj_txid) ;
10541054 } ) ;
10551055 Some ( pj_uri)
@@ -1139,19 +1139,20 @@ impl<S: MutinyStorage> NodeManager<S> {
11391139 /// Poll the payjoin relay to maintain a payjoin session and create a payjoin proposal.
11401140 pub async fn receive_payjoin (
11411141 wallet : Arc < OnChainWallet < S > > ,
1142+ stop : Arc < AtomicBool > ,
11421143 mut enrolled : payjoin:: receive:: v2:: Enrolled ,
11431144 ) -> Result < Txid , MutinyError > {
11441145 let http_client = reqwest:: Client :: builder ( )
11451146 //.danger_accept_invalid_certs(true) ? is tls unchecked :O
11461147 . build ( )
11471148 . unwrap ( ) ;
11481149 let proposal: payjoin:: receive:: v2:: UncheckedProposal =
1149- Self :: poll_for_fallback_psbt ( & http_client, & mut enrolled)
1150+ Self :: poll_for_fallback_psbt ( stop , & http_client, & mut enrolled)
11501151 . await
11511152 . unwrap ( ) ;
11521153 let payjoin_proposal = wallet. process_payjoin_proposal ( proposal) . unwrap ( ) ;
11531154
1154- let ( req, ohttp_ctx) = payjoin_proposal. extract_v2_req ( ) . unwrap ( ) ;
1155+ let ( req, ohttp_ctx) = payjoin_proposal. extract_v2_req ( ) . unwrap ( ) ; // extraction failed
11551156 let res = http_client
11561157 . post ( req. url )
11571158 . body ( req. body )
@@ -1170,10 +1171,14 @@ impl<S: MutinyStorage> NodeManager<S> {
11701171 }
11711172
11721173 async fn poll_for_fallback_psbt (
1174+ stop : Arc < AtomicBool > ,
11731175 client : & reqwest:: Client ,
11741176 enroller : & mut payjoin:: receive:: v2:: Enrolled ,
11751177 ) -> Result < payjoin:: receive:: v2:: UncheckedProposal , ( ) > {
11761178 loop {
1179+ if stop. load ( Ordering :: Relaxed ) {
1180+ return Err ( ( ) ) ; // stopped
1181+ }
11771182 let ( req, context) = enroller. extract_req ( ) . unwrap ( ) ;
11781183 let ohttp_response = client. post ( req. url ) . body ( req. body ) . send ( ) . await . unwrap ( ) ;
11791184 let ohttp_response = ohttp_response. bytes ( ) . await . unwrap ( ) ;
0 commit comments