File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -738,21 +738,54 @@ impl App {
738738 persister : & ReceiverPersister ,
739739 ) -> Result < ( ) > {
740740 // On a session resumption, the receiver will resume again in this state.
741- let _ = proposal
742- . check_payment (
743- |txid| {
744- self . wallet ( )
745- . get_raw_transaction ( & txid)
746- . map_err ( |e| ImplementationError :: from ( e. into_boxed_dyn_error ( ) ) )
747- } ,
748- |outpoint| {
749- self . wallet ( )
750- . is_outpoint_spent ( & outpoint)
751- . map_err ( |e| ImplementationError :: from ( e. into_boxed_dyn_error ( ) ) )
752- } ,
753- )
754- . save ( persister) ?;
755- Ok ( ( ) )
741+ let poll_interval = tokio:: time:: Duration :: from_millis ( 200 ) ;
742+ let timeout_duration = tokio:: time:: Duration :: from_secs ( 5 ) ;
743+
744+ let mut interval = tokio:: time:: interval ( poll_interval) ;
745+ interval. tick ( ) . await ;
746+
747+ tracing:: debug!( "Polling for payment confirmation" ) ;
748+
749+ let result = tokio:: time:: timeout ( timeout_duration, async {
750+ loop {
751+ interval. tick ( ) . await ;
752+ let check_result = proposal
753+ . check_payment (
754+ |txid| {
755+ self . wallet ( )
756+ . get_raw_transaction ( & txid)
757+ . map_err ( |e| ImplementationError :: from ( e. into_boxed_dyn_error ( ) ) )
758+ } ,
759+ |outpoint| {
760+ self . wallet ( )
761+ . is_outpoint_spent ( & outpoint)
762+ . map_err ( |e| ImplementationError :: from ( e. into_boxed_dyn_error ( ) ) )
763+ } ,
764+ )
765+ . save ( persister) ;
766+
767+ match check_result {
768+ Ok ( _) => {
769+ println ! ( "Payjoin transaction detected in the mempool!" ) ;
770+ return Ok ( ( ) ) ;
771+ }
772+ Err ( _) => {
773+ // keep polling
774+
775+ continue ;
776+ }
777+ }
778+ }
779+ } )
780+ . await ;
781+
782+ match result {
783+ Ok ( ok) => ok,
784+ Err ( _) => Err ( anyhow ! (
785+ "Timeout waiting for payment confirmation after {:?}" ,
786+ timeout_duration
787+ ) ) ,
788+ }
756789 }
757790
758791 async fn unwrap_relay_or_else_fetch (
You can’t perform that action at this time.
0 commit comments