Skip to content

Commit bee4875

Browse files
committed
core: Confirm refund txs.
1 parent 1a90b2c commit bee4875

File tree

5 files changed

+318
-125
lines changed

5 files changed

+318
-125
lines changed

client/core/core.go

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10665,9 +10665,9 @@ func (c *Core) deleteRequestedAction(uniqueID string) {
1066510665
c.requestedActionMtx.Unlock()
1066610666
}
1066710667

10668-
// handleRetryRedemptionAction handles a response to a user response to an
10669-
// ActionRequiredNote for a rejected redemption transaction.
10670-
func (c *Core) handleRetryRedemptionAction(actionB []byte) error {
10668+
// handleRetryTxAction handles a response to a user response to an
10669+
// ActionRequiredNote for a rejected redemption or refund transaction.
10670+
func (c *Core) handleRetryTxAction(actionB []byte, isRedeem bool) error {
1067110671
var req struct {
1067210672
OrderID dex.Bytes `json:"orderID"`
1067310673
CoinID dex.Bytes `json:"coinID"`
@@ -10703,23 +10703,31 @@ func (c *Core) handleRetryRedemptionAction(actionB []byte) error {
1070310703
coinID = match.MetaData.Proof.MakerRedeem
1070410704
}
1070510705
if bytes.Equal(coinID, req.CoinID) {
10706-
if match.Side == order.Taker && match.Status == order.MatchComplete {
10707-
// Try to redeem again.
10708-
match.redemptionRejected = false
10709-
match.MetaData.Proof.TakerRedeem = nil
10710-
match.Status = order.MakerRedeemed
10711-
if err := c.db.UpdateMatch(&match.MetaMatch); err != nil {
10712-
c.log.Errorf("Failed to update match in DB: %v", err)
10706+
if isRedeem {
10707+
if match.Side == order.Taker && match.Status == order.MatchComplete {
10708+
// Try to redeem again.
10709+
match.redemptionRejected = false
10710+
match.MetaData.Proof.TakerRedeem = nil
10711+
match.Status = order.MakerRedeemed
10712+
if err := c.db.UpdateMatch(&match.MetaMatch); err != nil {
10713+
c.log.Errorf("Failed to update match in DB: %v", err)
10714+
}
10715+
} else if match.Side == order.Maker && match.Status == order.MakerRedeemed {
10716+
match.redemptionRejected = false
10717+
match.MetaData.Proof.MakerRedeem = nil
10718+
match.Status = order.TakerSwapCast
10719+
if err := c.db.UpdateMatch(&match.MetaMatch); err != nil {
10720+
c.log.Errorf("Failed to update match in DB: %v", err)
10721+
}
10722+
} else {
10723+
c.log.Errorf("Redemption retry attempted for order side %s status %s", match.Side, match.Status)
1071310724
}
10714-
} else if match.Side == order.Maker && match.Status == order.MakerRedeemed {
10715-
match.redemptionRejected = false
10716-
match.MetaData.Proof.MakerRedeem = nil
10717-
match.Status = order.TakerSwapCast
10725+
} else {
10726+
match.MetaData.Proof.RefundCoin = nil
10727+
match.refundRejected = false
1071810728
if err := c.db.UpdateMatch(&match.MetaMatch); err != nil {
1071910729
c.log.Errorf("Failed to update match in DB: %v", err)
1072010730
}
10721-
} else {
10722-
c.log.Errorf("Redemption retry attempted for order side %s status %s", match.Side, match.Status)
1072310731
}
1072410732
}
1072510733
}
@@ -10731,7 +10739,9 @@ func (c *Core) handleRetryRedemptionAction(actionB []byte) error {
1073110739
func (c *Core) handleCoreAction(actionID string, actionB json.RawMessage) ( /* handled */ bool, error) {
1073210740
switch actionID {
1073310741
case ActionIDRedeemRejected:
10734-
return true, c.handleRetryRedemptionAction(actionB)
10742+
return true, c.handleRetryTxAction(actionB, true)
10743+
case ActionIDRefundRejected:
10744+
return true, c.handleRetryTxAction(actionB, false)
1073510745
}
1073610746
return false, nil
1073710747
}

0 commit comments

Comments
 (0)