diff --git a/core/src/main/java/bisq/core/offer/Offer.java b/core/src/main/java/bisq/core/offer/Offer.java index 7c3797a058b..88c2963b0e3 100644 --- a/core/src/main/java/bisq/core/offer/Offer.java +++ b/core/src/main/java/bisq/core/offer/Offer.java @@ -225,8 +225,15 @@ public long getFixedPrice() { 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) diff --git a/core/src/main/java/bisq/core/offer/OpenOfferManager.java b/core/src/main/java/bisq/core/offer/OpenOfferManager.java index 2aab258b9c5..e2b270f6904 100644 --- a/core/src/main/java/bisq/core/offer/OpenOfferManager.java +++ b/core/src/main/java/bisq/core/offer/OpenOfferManager.java @@ -685,7 +685,7 @@ private void handleOfferAvailabilityRequest(OfferAvailabilityRequest request, No // 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."); diff --git a/core/src/main/java/bisq/core/trade/protocol/bisq_v1/tasks/maker/MakerProcessesInputsForDepositTxRequest.java b/core/src/main/java/bisq/core/trade/protocol/bisq_v1/tasks/maker/MakerProcessesInputsForDepositTxRequest.java index c2ac35f6d90..c49c2338e21 100644 --- a/core/src/main/java/bisq/core/trade/protocol/bisq_v1/tasks/maker/MakerProcessesInputsForDepositTxRequest.java +++ b/core/src/main/java/bisq/core/trade/protocol/bisq_v1/tasks/maker/MakerProcessesInputsForDepositTxRequest.java @@ -104,7 +104,7 @@ protected void run() { 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());