From f485ccc48a75f964a794379657b94ab88f6ddecb Mon Sep 17 00:00:00 2001 From: woodser <13068859+woodser@users.noreply.github.com> Date: Fri, 11 Apr 2025 18:11:26 -0400 Subject: [PATCH] do not cancel open offer when funds spent and reserved for trade --- core/src/main/java/haveno/core/offer/OpenOfferManager.java | 4 ++-- .../java/haveno/core/offer/placeoffer/PlaceOfferProtocol.java | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/haveno/core/offer/OpenOfferManager.java b/core/src/main/java/haveno/core/offer/OpenOfferManager.java index aec7700c92..64c6c86a15 100644 --- a/core/src/main/java/haveno/core/offer/OpenOfferManager.java +++ b/core/src/main/java/haveno/core/offer/OpenOfferManager.java @@ -960,8 +960,8 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe private void cancelOpenOffersOnSpent(String keyImage) { synchronized (openOffers.getList()) { for (OpenOffer openOffer : openOffers.getList()) { - if (openOffer.getOffer().getOfferPayload().getReserveTxKeyImages() != null && openOffer.getOffer().getOfferPayload().getReserveTxKeyImages().contains(keyImage)) { - log.warn("Canceling open offer because reserved funds have been spent, offerId={}, state={}", openOffer.getId(), openOffer.getState()); + if (openOffer.getState() != OpenOffer.State.RESERVED && openOffer.getOffer().getOfferPayload().getReserveTxKeyImages() != null && openOffer.getOffer().getOfferPayload().getReserveTxKeyImages().contains(keyImage)) { + log.warn("Canceling open offer because reserved funds have been spent unexpectedly, offerId={}, state={}", openOffer.getId(), openOffer.getState()); cancelOpenOffer(openOffer, null, null); } } diff --git a/core/src/main/java/haveno/core/offer/placeoffer/PlaceOfferProtocol.java b/core/src/main/java/haveno/core/offer/placeoffer/PlaceOfferProtocol.java index 68d5f9da4f..91e413eed4 100644 --- a/core/src/main/java/haveno/core/offer/placeoffer/PlaceOfferProtocol.java +++ b/core/src/main/java/haveno/core/offer/placeoffer/PlaceOfferProtocol.java @@ -89,7 +89,6 @@ public class PlaceOfferProtocol { handleError("Offer was canceled: " + model.getOpenOffer().getOffer().getId()); // cancel is treated as error for callers to handle } - // TODO (woodser): switch to fluent public void handleSignOfferResponse(SignOfferResponse response, NodeAddress sender) { log.debug("handleSignOfferResponse() " + model.getOpenOffer().getOffer().getId()); model.setSignOfferResponse(response);