@@ -795,6 +795,7 @@ impl<S: MutinyStorage> NodeManager<S> {
795795 /// Poll the payjoin relay to maintain a payjoin session and create a payjoin proposal.
796796 pub async fn receive_payjoin (
797797 wallet : Arc < OnChainWallet < S > > ,
798+ stop : Arc < AtomicBool > ,
798799 mut enrolled : payjoin:: receive:: v2:: Enrolled ,
799800 ) -> Result < Txid , MutinyError > {
800801 use crate :: payjoin:: Error as PayjoinError ;
@@ -803,10 +804,10 @@ impl<S: MutinyStorage> NodeManager<S> {
803804 . build ( )
804805 . map_err ( PayjoinError :: Reqwest ) ?;
805806 let proposal: payjoin:: receive:: v2:: UncheckedProposal =
806- Self :: poll_for_fallback_psbt ( & http_client, & mut enrolled) . await ? ;
807- let mut payjoin_proposal = wallet
808- . process_payjoin_proposal ( proposal )
809- . map_err ( |_| crate :: payjoin :: Error :: ReceiverStateMachine ) ? ;
807+ Self :: poll_for_fallback_psbt ( stop , & http_client, & mut enrolled)
808+ . await
809+ . map_err ( |_| crate :: payjoin :: Error :: ReceiverStateMachine ) ? ;
810+ let mut payjoin_proposal = wallet . process_payjoin_proposal ( proposal ) . unwrap ( ) ;
810811
811812 let ( req, ohttp_ctx) = payjoin_proposal
812813 . extract_v2_req ( )
@@ -827,10 +828,14 @@ impl<S: MutinyStorage> NodeManager<S> {
827828 }
828829
829830 async fn poll_for_fallback_psbt (
831+ stop : Arc < AtomicBool > ,
830832 client : & reqwest:: Client ,
831833 enroller : & mut payjoin:: receive:: v2:: Enrolled ,
832834 ) -> Result < payjoin:: receive:: v2:: UncheckedProposal , crate :: payjoin:: Error > {
833835 loop {
836+ if stop. load ( Ordering :: Relaxed ) {
837+ return Err ( crate :: payjoin:: Error :: Shutdown ) ;
838+ }
834839 let ( req, context) = enroller. extract_req ( ) ?;
835840 let ohttp_response = client
836841 . post ( req. url )
0 commit comments