fix(asb): send zero quote on failure (#379)

* fix(asb): send zero quote on failure

* static function for BidQuote::ZERO
This commit is contained in:
Mohan 2025-06-06 15:02:31 +02:00 committed by GitHub
parent 119db50c11
commit 2ba69ba340
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 21 additions and 2 deletions

View file

@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
- ASB: The maker will take Monero funds needed for ongoing swaps into consideration when making a quote. A warning will be displayed if the Monero funds do not cover all ongoing swaps.
- ASB: Return a zero quote when quoting fails instead of letting the request time out
## [1.1.7] - 2025-06-04

View file

@ -259,8 +259,17 @@ where
// The error is already logged in the make_quote_or_use_cached function
// We don't log it here to avoid spamming on each request
Err(_) => {
// TODO: Respond with the error to Bob. Currently this will timeout on Bob's side.
continue;
// We respond with a zero quote. This will stop Bob from trying to start a swap but doesn't require
// a breaking network change by changing the definition of the quote protocol
if self
.swarm
.behaviour_mut()
.quote
.send_response(channel, BidQuote::ZERO)
.is_err()
{
tracing::debug!(%peer, "Failed to respond with zero quote");
}
}
}
}

View file

@ -40,6 +40,15 @@ pub struct BidQuote {
pub max_quantity: bitcoin::Amount,
}
impl BidQuote {
/// A zero quote with all amounts set to zero
pub const ZERO: Self = Self {
price: bitcoin::Amount::ZERO,
min_quantity: bitcoin::Amount::ZERO,
max_quantity: bitcoin::Amount::ZERO,
};
}
#[derive(Clone, Copy, Debug, thiserror::Error)]
#[error("Received quote of 0")]
pub struct ZeroQuoteReceived;