mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-09-22 14:04:44 -04:00
do not remove maker offer on nack due to send message error
This commit is contained in:
parent
5b08c66174
commit
b0e1d5b4ce
2 changed files with 14 additions and 9 deletions
|
@ -104,6 +104,7 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
|
|||
public static final int REQUEST_CONNECTION_SWITCH_EVERY_NUM_ATTEMPTS = 2; // request connection switch on even attempts
|
||||
public static final long REPROCESS_DELAY_MS = 5000;
|
||||
public static final String LOG_HIGHLIGHT = ""; // TODO: how to highlight some logs with cyan? ("\u001B[36m")? coloring works in the terminal but prints character literals to .log files
|
||||
public static final String SEND_INIT_TRADE_REQUEST_FAILED = "Sending InitTradeRequest failed";
|
||||
|
||||
protected final ProcessModel processModel;
|
||||
protected final Trade trade;
|
||||
|
@ -116,7 +117,7 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
|
|||
private boolean depositsConfirmedTasksCalled;
|
||||
private int reprocessPaymentSentMessageCount;
|
||||
private int reprocessPaymentReceivedMessageCount;
|
||||
private boolean makerInitTradeRequestNacked = false;
|
||||
private boolean makerInitTradeRequestHasBeenNacked = false;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Constructor
|
||||
|
@ -767,13 +768,17 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
|
|||
|
||||
// TODO: arbitrator may nack maker's InitTradeRequest if reserve tx has become invalid (e.g. check_tx_key shows 0 funds received). recreate reserve tx in this case
|
||||
if (!ackMessage.isSuccess() && trade.isMaker() && peer == trade.getArbitrator() && ackMessage.getSourceMsgClassName().equals(InitTradeRequest.class.getSimpleName())) {
|
||||
if (makerInitTradeRequestNacked) {
|
||||
handleSecondMakerInitTradeRequestNack(ackMessage);
|
||||
// use default postprocessing
|
||||
if (ackMessage.getErrorMessage() != null && ackMessage.getErrorMessage().contains(SEND_INIT_TRADE_REQUEST_FAILED)) {
|
||||
// use default postprocessing to cancel maker's trade if arbitrator cannot send message to taker
|
||||
} else {
|
||||
makerInitTradeRequestNacked = true;
|
||||
handleFirstMakerInitTradeRequestNack(ackMessage);
|
||||
return;
|
||||
if (makerInitTradeRequestHasBeenNacked) {
|
||||
handleSecondMakerInitTradeRequestNack(ackMessage);
|
||||
// use default postprocessing to cancel maker's trade
|
||||
} else {
|
||||
makerInitTradeRequestHasBeenNacked = true;
|
||||
handleFirstMakerInitTradeRequestNack(ackMessage);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ import haveno.core.trade.Trade;
|
|||
import haveno.core.trade.messages.InitMultisigRequest;
|
||||
import haveno.core.trade.messages.InitTradeRequest;
|
||||
import haveno.core.trade.protocol.TradePeer;
|
||||
import haveno.core.trade.protocol.TradeProtocol;
|
||||
import haveno.network.p2p.SendDirectMessageListener;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import monero.wallet.MoneroWallet;
|
||||
|
@ -95,8 +96,7 @@ public class ArbitratorSendInitTradeOrMultisigRequests extends TradeTask {
|
|||
}
|
||||
@Override
|
||||
public void onFault(String errorMessage) {
|
||||
log.error("Sending {} failed: uid={}; peer={}; error={}", takerRequest.getClass().getSimpleName(), takerRequest.getUid(), trade.getTaker().getNodeAddress(), errorMessage);
|
||||
appendToErrorMessage("Sending message failed: message=" + takerRequest + "\nerrorMessage=" + errorMessage);
|
||||
appendToErrorMessage(TradeProtocol.SEND_INIT_TRADE_REQUEST_FAILED + ": message=" + takerRequest + "\nerrorMessage=" + errorMessage);
|
||||
failed();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue