From 68a615797d70ac7dab29f181773217b6cb551e11 Mon Sep 17 00:00:00 2001 From: woodser <13068859+woodser@users.noreply.github.com> Date: Wed, 16 Apr 2025 12:37:04 -0400 Subject: [PATCH] skip offer signature validation for cloned offer until signed --- .../haveno/core/offer/OpenOfferManager.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/haveno/core/offer/OpenOfferManager.java b/core/src/main/java/haveno/core/offer/OpenOfferManager.java index 1dec0aff56..e7613c2b15 100644 --- a/core/src/main/java/haveno/core/offer/OpenOfferManager.java +++ b/core/src/main/java/haveno/core/offer/OpenOfferManager.java @@ -1101,17 +1101,20 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe } else { // validate non-pending state - try { - validateSignedState(openOffer); - resultHandler.handleResult(null); // done processing if non-pending state is valid - return; - } catch (Exception e) { - log.warn(e.getMessage()); + boolean skipValidation = openOffer.isDeactivated() && hasConflictingClone(openOffer) && openOffer.getOffer().getOfferPayload().getArbitratorSignature() == null; // clone with conflicting offer is deactivated and unsigned at first + if (!skipValidation) { + try { + validateSignedState(openOffer); + resultHandler.handleResult(null); // done processing if non-pending state is valid + return; + } catch (Exception e) { + log.warn(e.getMessage()); - // reset arbitrator signature - openOffer.getOffer().getOfferPayload().setArbitratorSignature(null); - openOffer.getOffer().getOfferPayload().setArbitratorSigner(null); - if (openOffer.isAvailable()) openOffer.setState(OpenOffer.State.PENDING); + // reset arbitrator signature + openOffer.getOffer().getOfferPayload().setArbitratorSignature(null); + openOffer.getOffer().getOfferPayload().setArbitratorSigner(null); + if (openOffer.isAvailable()) openOffer.setState(OpenOffer.State.PENDING); + } } }