Read the latest mint quote status in a transaction to avoid race conditions (#1166)

* Read the latest mint quote status in a transaction to avoid race conditions

Fixes #1162

* Reload quote for all cases

* Exit on paid invoices only for bolt11
This commit is contained in:
C
2025-10-08 17:52:40 -03:00
committed by GitHub
parent cae8768a87
commit 3075ac4e59

View File

@@ -45,6 +45,20 @@ impl Mint {
let mut tx = self.localstore.begin_transaction().await?;
// reload the quote, as it state may have changed
*quote = tx
.get_mint_quote(&quote.id)
.await?
.ok_or(Error::UnknownQuote)?;
let current_state = quote.state();
if quote.payment_method == PaymentMethod::Bolt11
&& (current_state == MintQuoteState::Issued || current_state == MintQuoteState::Paid)
{
return Ok(());
}
for payment in ln_status {
if !quote.payment_ids().contains(&&payment.payment_id)
&& payment.payment_amount > Amount::ZERO