@@ -77,9 +77,10 @@ impl AppTrait for App {
7777
7878 async fn receive_payjoin ( & self , amount : Amount ) -> Result < ( ) > {
7979 let address = self . wallet ( ) . get_new_address ( ) ?;
80- let ohttp_keys = unwrap_ohttp_keys_or_else_fetch ( & self . config , self . relay_manager . clone ( ) )
81- . await ?
82- . ohttp_keys ;
80+ let ohttp_keys =
81+ unwrap_ohttp_keys_or_else_fetch ( & self . config , None , self . relay_manager . clone ( ) )
82+ . await ?
83+ . ohttp_keys ;
8384 let mut persister = ReceiverPersister :: new ( self . db . clone ( ) ) ;
8485 let new_receiver = NewReceiver :: new (
8586 address,
@@ -161,7 +162,9 @@ impl App {
161162 println ! ( "Receive session established" ) ;
162163 let mut pj_uri = session. pj_uri ( ) ;
163164 pj_uri. amount = amount;
164- let ohttp_relay = self . unwrap_relay_or_else_fetch ( ) . await ?;
165+ let ohttp_relay = self
166+ . unwrap_relay_or_else_fetch ( Some ( session. pj_uri ( ) . extras . endpoint ( ) . clone ( ) ) )
167+ . await ?;
165168
166169 println ! ( "Request Payjoin by sharing this Payjoin Uri:" ) ;
167170 println ! ( "{pj_uri}" ) ;
@@ -202,7 +205,7 @@ impl App {
202205 }
203206
204207 async fn long_poll_post ( & self , req_ctx : & mut Sender < WithReplyKey > ) -> Result < Psbt > {
205- let ohttp_relay = self . unwrap_relay_or_else_fetch ( ) . await ?;
208+ let ohttp_relay = self . unwrap_relay_or_else_fetch ( Some ( req_ctx . endpoint ( ) . clone ( ) ) ) . await ?;
206209
207210 match req_ctx. extract_v2 ( ohttp_relay. clone ( ) ) {
208211 Ok ( ( req, ctx) ) => {
@@ -247,7 +250,9 @@ impl App {
247250 & self ,
248251 session : & mut Receiver < WithContext > ,
249252 ) -> Result < Receiver < UncheckedProposal > > {
250- let ohttp_relay = self . unwrap_relay_or_else_fetch ( ) . await ?;
253+ let ohttp_relay = self
254+ . unwrap_relay_or_else_fetch ( Some ( session. pj_uri ( ) . extras . endpoint ( ) . clone ( ) ) )
255+ . await ?;
251256
252257 loop {
253258 let ( req, context) = session. extract_req ( & ohttp_relay) ?;
@@ -303,13 +308,16 @@ impl App {
303308 Ok ( payjoin_proposal)
304309 }
305310
306- async fn unwrap_relay_or_else_fetch ( & self ) -> Result < payjoin:: Url > {
311+ async fn unwrap_relay_or_else_fetch (
312+ & self ,
313+ directory : Option < payjoin:: Url > ,
314+ ) -> Result < payjoin:: Url > {
307315 let selected_relay =
308316 self . relay_manager . lock ( ) . expect ( "Lock should not be poisoned" ) . get_selected_relay ( ) ;
309317 let ohttp_relay = match selected_relay {
310318 Some ( relay) => relay,
311319 None =>
312- unwrap_ohttp_keys_or_else_fetch ( & self . config , self . relay_manager . clone ( ) )
320+ unwrap_ohttp_keys_or_else_fetch ( & self . config , directory , self . relay_manager . clone ( ) )
313321 . await ?
314322 . relay_url ,
315323 } ;
0 commit comments