Add mechanism to block htlcs from settling back #9586
+21
−11
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Required for #9584
Adds a persisted dictionary of htlc keys (= result of
serialize_htlc_key()
) to lnworker to allow adding htlcs which should not be settled back even if we got the required preimage to do so.Currently if we open a JIT channel and get the preimage from the client we concurrently settle the incoming htlc to us, however we may still want to fail it in the process of opening the JIT channel which is not finished yet, for example if we were unable to broadcast the funding tx. With this change we can block the settling until the forwarding callback has returned.
Also fixes a key error exception that happened if the incoming htlc got settled before the callback returned,
wrapped_callback
then tried to accessactive_forwardings[payment_key]
which has already been removed after settling the incoming htlc.