Skip to content

Commit 5062488

Browse files
committed
Force payjoin-cli resume to choose a random relay for each session
This commit ensures that each resumed payjoin-cli session is using a separate instance of the RelayManager to then check the ohttp connection independently. This fixes a bug where resuming would converge all existing sessions to one ohttp relay.
1 parent 3d1681b commit 5062488

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

payjoin-cli/src/app/v2/mod.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,6 @@ impl AppTrait for App {
276276
Ok(())
277277
}
278278

279-
#[allow(clippy::incompatible_msrv)]
280279
async fn resume_payjoins(&self) -> Result<()> {
281280
let recv_session_ids = self.db.get_recv_session_ids()?;
282281
let send_session_ids = self.db.get_send_session_ids()?;
@@ -290,12 +289,14 @@ impl AppTrait for App {
290289

291290
// Process receiver sessions
292291
for session_id in recv_session_ids {
293-
let self_clone = self.clone();
294292
let recv_persister = ReceiverPersister::from_id(self.db.clone(), session_id.clone());
295293
match replay_receiver_event_log(&recv_persister) {
296294
Ok((receiver_state, _)) => {
295+
let self_clone = self.clone();
297296
tasks.push(tokio::spawn(async move {
298-
self_clone.process_receiver_session(receiver_state, &recv_persister).await
297+
let mut app = self_clone;
298+
app.relay_manager = Arc::new(Mutex::new(RelayManager::new()));
299+
app.process_receiver_session(receiver_state, &recv_persister).await
299300
}));
300301
}
301302
Err(e) => {
@@ -312,7 +313,9 @@ impl AppTrait for App {
312313
Ok((sender_state, _)) => {
313314
let self_clone = self.clone();
314315
tasks.push(tokio::spawn(async move {
315-
self_clone.process_sender_session(sender_state, &sender_persiter).await
316+
let mut app = self_clone;
317+
app.relay_manager = Arc::new(Mutex::new(RelayManager::new()));
318+
app.process_sender_session(sender_state, &sender_persiter).await
316319
}));
317320
}
318321
Err(e) => {

0 commit comments

Comments
 (0)