From e5399f189c147fef0451eec1af281407cd73cd6b Mon Sep 17 00:00:00 2001 From: jmacxx <47253594+jmacxx@users.noreply.github.com> Date: Fri, 9 Apr 2021 09:41:41 -0500 Subject: [PATCH] Wait for AckMessage before completing task --- ...CounterCurrencyTransferStartedMessage.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/bisq/core/trade/protocol/tasks/buyer/BuyerSendCounterCurrencyTransferStartedMessage.java b/core/src/main/java/bisq/core/trade/protocol/tasks/buyer/BuyerSendCounterCurrencyTransferStartedMessage.java index e454d93c705..b594d646ce2 100644 --- a/core/src/main/java/bisq/core/trade/protocol/tasks/buyer/BuyerSendCounterCurrencyTransferStartedMessage.java +++ b/core/src/main/java/bisq/core/trade/protocol/tasks/buyer/BuyerSendCounterCurrencyTransferStartedMessage.java @@ -92,11 +92,10 @@ protected void setStateSent() { @Override protected void setStateArrived() { - trade.setStateIfValidTransitionTo(Trade.State.BUYER_SAW_ARRIVED_FIAT_PAYMENT_INITIATED_MSG); - - processModel.getTradeManager().requestPersistence(); - cleanup(); - // Complete is called in base class + // the message has arrived but we're ultimately waiting for an AckMessage response + if (!trade.isPayoutPublished()) { + tryToSendAgainLater(); + } } // We override the default behaviour for onStoredInMailbox and do not call complete @@ -142,6 +141,13 @@ protected void run() { } } + // complete() is called from base class SendMailboxMessageTask=>onArrived() + // We override the default behaviour for complete and keep this task open until receipt of the AckMessage + @Override + protected void complete() { + onMessageStateChange(processModel.getPaymentStartedMessageStateProperty().get()); // check for AckMessage + } + private void cleanup() { if (timer != null) { timer.stop(); @@ -160,7 +166,7 @@ private void tryToSendAgainLater() { return; } - log.info("We send the message again to the peer after a delay of {} min.", delayInMin); + log.info("We will send the message again to the peer after a delay of {} min.", delayInMin); if (timer != null) { timer.stop(); } @@ -186,7 +192,7 @@ private void onMessageStateChange(MessageState newValue) { processModel.getTradeManager().requestPersistence(); cleanup(); - complete(); + super.complete(); // received AckMessage, complete this task } } }