From c1f6adc8ed8b5607fe05c57a64bee259a871041c Mon Sep 17 00:00:00 2001 From: Lucas Soriano del Pino Date: Fri, 16 Oct 2020 10:54:12 +1100 Subject: [PATCH] Refund if Alice takes too long to prove that Monero has been locked --- xmr-btc/src/lib.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/xmr-btc/src/lib.rs b/xmr-btc/src/lib.rs index 0430b567..fc0cbb35 100644 --- a/xmr-btc/src/lib.rs +++ b/xmr-btc/src/lib.rs @@ -151,7 +151,16 @@ where futures::pin_mut!(poll_until_btc_has_expired); // the source of this could be the database, this layer doesn't care - let transfer_proof = network.receive_transfer_proof().await; + + let transfer_proof = match select( + network.receive_transfer_proof(), + poll_until_btc_has_expired.clone(), + ) + .await + { + Either::Left((proof, _)) => proof, + Either::Right(_) => return Err(SwapFailed::TimelockReached), + }; let S_b_monero = monero::PublicKey::from_private_key(&monero::PrivateKey::from_scalar( s_b.into_ed25519(),