thaw reserved outputs within task if canceled

This commit is contained in:
woodser 2024-05-23 18:17:27 -04:00
parent f2f5a6fd24
commit 796603f82b
2 changed files with 27 additions and 15 deletions

View file

@ -79,6 +79,7 @@ public class MakerReserveOfferFunds extends Task<PlaceOfferModel> {
Integer preferredSubaddressIndex = fundingEntry == null ? null : fundingEntry.getSubaddressIndex();
// attempt creating reserve tx
try {
synchronized (HavenoUtils.getWalletFunctionLock()) {
for (int i = 0; i < TradeProtocol.MAX_ATTEMPTS; i++) {
try {
@ -96,6 +97,16 @@ public class MakerReserveOfferFunds extends Task<PlaceOfferModel> {
if (reserveTx != null) break;
}
}
} catch (Exception e) {
// reset state with wallet lock
model.getXmrWalletService().resetAddressEntriesForOpenOffer(offer.getId());
if (reserveTx != null) {
model.getXmrWalletService().thawOutputs(HavenoUtils.getInputKeyImages(reserveTx));
}
throw e;
}
// reset protocol timeout
model.getProtocol().startTimeoutTimer();

View file

@ -81,7 +81,8 @@ public class TakerReserveTradeFunds extends TradeTask {
}
} catch (Exception e) {
// thaw reserved inputs
// reset state with wallet lock
model.getXmrWalletService().resetAddressEntriesForTrade(trade.getId());
if (reserveTx != null) {
model.getXmrWalletService().thawOutputs(HavenoUtils.getInputKeyImages(reserveTx));
trade.getSelf().setReserveTxKeyImages(null);