Prevent ChannelForceClosed monitor update error after detecting spend

If we detected a spend for a channel onchain prior to handling its
`ChannelForceClosed` monitor update, we'd log a concerning error
message and return an error unnecessarily. The channel has already been
closed, so handling the `ChannelForceClosed` monitor update at this
point should be a no-op.
This commit is contained in:
Wilmer Paulino 2023-05-04 15:16:17 -07:00
parent e94647ca4e
commit 9878edeeba
No known key found for this signature in database
GPG key ID: 634FE5FC544DCA31

View file

@ -2457,7 +2457,9 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
self.latest_update_id = updates.update_id;
if ret.is_ok() && self.funding_spend_seen {
// Refuse updates after we've detected a spend onchain, but only if we haven't processed a
// force closed monitor update yet.
if ret.is_ok() && self.funding_spend_seen && self.latest_update_id != CLOSED_CHANNEL_UPDATE_ID {
log_error!(logger, "Refusing Channel Monitor Update as counterparty attempted to update commitment after funding was spent");
Err(())
} else { ret }