@@ -10665,9 +10665,9 @@ func (c *Core) deleteRequestedAction(uniqueID string) {
10665
10665
c .requestedActionMtx .Unlock ()
10666
10666
}
10667
10667
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 {
10671
10671
var req struct {
10672
10672
OrderID dex.Bytes `json:"orderID"`
10673
10673
CoinID dex.Bytes `json:"coinID"`
@@ -10703,23 +10703,31 @@ func (c *Core) handleRetryRedemptionAction(actionB []byte) error {
10703
10703
coinID = match .MetaData .Proof .MakerRedeem
10704
10704
}
10705
10705
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 )
10713
10724
}
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
10718
10728
if err := c .db .UpdateMatch (& match .MetaMatch ); err != nil {
10719
10729
c .log .Errorf ("Failed to update match in DB: %v" , err )
10720
10730
}
10721
- } else {
10722
- c .log .Errorf ("Redemption retry attempted for order side %s status %s" , match .Side , match .Status )
10723
10731
}
10724
10732
}
10725
10733
}
@@ -10731,7 +10739,9 @@ func (c *Core) handleRetryRedemptionAction(actionB []byte) error {
10731
10739
func (c * Core ) handleCoreAction (actionID string , actionB json.RawMessage ) ( /* handled */ bool , error ) {
10732
10740
switch actionID {
10733
10741
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 )
10735
10745
}
10736
10746
return false , nil
10737
10747
}
0 commit comments