contractcourt/channel_arbitrator: ignore ErrDoubleSpend on force close

This commit mitigates a problem within the ChannelArbitrator, where
after a restart we would start up in the state StateBroadcastCommit but
fail to broadcast out commitment because a conflicting transaction (most
likely our own commitment) was already broadcast. A more complete fix
for this case will be added later, but this commit let the
ChannelArbitrator continue, trying to close out the channel.
This commit is contained in:
Johan T. Halseth 2018-03-29 11:15:41 +02:00
parent 87d77a1b87
commit d216416db8
No known key found for this signature in database
GPG Key ID: 15BAADA29DA20D26

@ -451,7 +451,9 @@ func (c *ChannelArbitrator) stateStep(bestHeight uint32, bestHash *chainhash.Has
if err := c.cfg.PublishTx(closeTx); err != nil {
log.Errorf("ChannelArbitrator(%v): unable to broadcast "+
"close tx: %v", c.cfg.ChanPoint, err)
return StateError, closeTx, err
if err != lnwallet.ErrDoubleSpend {
return StateError, closeTx, err
}
}
// As we've have broadcast the commitment transaction, we send