From 5a04999da120c92fe23f7ea61b2e68e44026b3fb Mon Sep 17 00:00:00 2001 From: yse Date: Wed, 18 Sep 2024 16:25:17 +0200 Subject: [PATCH] fix: move swap expiry check outside send swap --- lib/core/src/send_swap.rs | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/core/src/send_swap.rs b/lib/core/src/send_swap.rs index a04aa1bdb..43e1a94cf 100644 --- a/lib/core/src/send_swap.rs +++ b/lib/core/src/send_swap.rs @@ -374,12 +374,6 @@ impl SendSwapHandler { swap: &SendSwap, is_cooperative: bool, ) -> Result { - if !is_cooperative && !self.check_swap_expiry(swap).await? { - return Err(PaymentError::Generic { - err: format!("Cannot refund non-cooperatively: Locktime for Send swap {} has not elapsed yet.", swap.id), - }); - } - info!( "Initiating refund for Send Swap {}, is_cooperative: {is_cooperative}", swap.id @@ -448,13 +442,24 @@ impl SendSwapHandler { continue; } + let has_swap_expired = self.check_swap_expiry(swap).await.unwrap_or(false); let refund_tx_id_result = match swap.state { - Pending => self.refund(swap, false).await, - RefundPending => { - self.refund(swap, true) - .or_else(|_| self.refund(swap, false)) - .await + Pending => { + if !has_swap_expired { + warn!("Cannot refund non-cooperatively: Locktime for pending Send swap {} has not elapsed yet.", swap.id); + continue; + } + + self.refund(swap, false).await } + RefundPending => match has_swap_expired { + true => { + self.refund(swap, true) + .or_else(|_| self.refund(swap, false)) + .await + } + false => self.refund(swap, true).await, + }, _ => { continue; }