Merge pull request #5825 from chimp1984/improve-offer-validation

Improve offer validation
This commit is contained in:
Christoph Atteneder 2021-11-15 12:03:29 +01:00 committed by GitHub
commit 83c9355931
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 3 deletions

View file

@ -225,8 +225,15 @@ public class Offer implements NetworkPayload, PersistablePayload {
return offerPayloadBase.getPrice();
}
public void checkTradePriceTolerance(long takersTradePrice) throws TradePriceOutOfToleranceException,
public void verifyTakersTradePrice(long takersTradePrice) throws TradePriceOutOfToleranceException,
MarketPriceNotAvailableException, IllegalArgumentException {
if (!isUseMarketBasedPrice()) {
checkArgument(takersTradePrice == getFixedPrice(),
"Takers price does not match offer price. " +
"Takers price=" + takersTradePrice + "; offer price=" + getFixedPrice());
return;
}
Price tradePrice = Price.valueOf(getCurrencyCode(), takersTradePrice);
Price offerPrice = getPrice();
if (offerPrice == null)

View file

@ -685,7 +685,7 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
// Check also tradePrice to avoid failures after taker fee is paid caused by a too big difference
// in trade price between the peers. Also here poor connectivity might cause market price API connection
// losses and therefore an outdated market price.
offer.checkTradePriceTolerance(request.getTakersTradePrice());
offer.verifyTakersTradePrice(request.getTakersTradePrice());
availabilityResult = AvailabilityResult.AVAILABLE;
} catch (TradePriceOutOfToleranceException e) {
log.warn("Trade price check failed because takers price is outside out tolerance.");

View file

@ -104,7 +104,7 @@ public class MakerProcessesInputsForDepositTxRequest extends TradeTask {
Offer offer = checkNotNull(trade.getOffer(), "Offer must not be null");
try {
long takersTradePrice = request.getTradePrice();
offer.checkTradePriceTolerance(takersTradePrice);
offer.verifyTakersTradePrice(takersTradePrice);
trade.setPriceAsLong(takersTradePrice);
} catch (TradePriceOutOfToleranceException e) {
failed(e.getMessage());