]> git.bitcoin.ninja Git - rust-lightning/commit
Pass info about claimed payments, incl HTLCs to `ChannelMonitor`s
authorMatt Corallo <git@bluematt.me>
Sun, 15 Sep 2024 23:50:31 +0000 (23:50 +0000)
committerMatt Corallo <git@bluematt.me>
Thu, 24 Oct 2024 17:44:33 +0000 (17:44 +0000)
commitb8661ef6cf7f13c9f904fbd25c59fb59415f0d73
treea99925a9a97e95de04aa02049d9c109c1c734319
parentd9175f454bfce665af32c9a3ec54482fbb6a484d
Pass info about claimed payments, incl HTLCs to `ChannelMonitor`s

When we claim an MPP payment, then crash before persisting all the
relevant `ChannelMonitor`s, we rely on the payment data being
available in the `ChannelManager` on restart to re-claim any parts
that haven't yet been claimed. This is fine as long as the
`ChannelManager` was persisted before the `PaymentClaimable` event
was processed, which is generally the case in our
`lightning-background-processor`, but may not be in other cases or
in a somewhat rare race.

In order to fix this, we need to track where all the MPP parts of
a payment are in the `ChannelMonitor`, allowing us to re-claim any
missing pieces without reference to any `ChannelManager` data.

Further, in order to properly generate a `PaymentClaimed` event
against the re-started claim, we have to store various payment
metadata with the HTLC list as well.

Here we take the first step, building a list of MPP parts and
metadata in `ChannelManager` and passing it through to
`ChannelMonitor` in the `ChannelMonitorUpdate`s.
lightning/src/chain/channelmonitor.rs
lightning/src/ln/channel.rs
lightning/src/ln/channelmanager.rs
pending_changelog/3322-a.txt [new file with mode: 0644]