invoices: properly set Preimage for settle resolutions
This fixes a nil-pointer-dereference that would occur if this was called for a settled AMP invoice. Terms.PaymentPreimage is always false for AMP invoices.
This commit is contained in:
1 file changed
+9
-1
+9
-1
@@ -108,8 +108,16 @@ func updateInvoice(ctx *invoiceUpdateCtx, inv *channeldb.Invoice) (
|
|||||||
return nil, ctx.acceptRes(resultReplayToAccepted), nil
|
return nil, ctx.acceptRes(resultReplayToAccepted), nil
|
||||||
|
|
||||||
case channeldb.HtlcStateSettled:
|
case channeldb.HtlcStateSettled:
|
||||||
|
pre := inv.Terms.PaymentPreimage
|
||||||
|
|
||||||
|
// Terms.PaymentPreimage will be nil for AMP invoices.
|
||||||
|
// Set it to the HTLC's AMP Preimage instead.
|
||||||
|
if pre == nil {
|
||||||
|
pre = htlc.AMP.Preimage
|
||||||
|
}
|
||||||
|
|
||||||
return nil, ctx.settleRes(
|
return nil, ctx.settleRes(
|
||||||
*inv.Terms.PaymentPreimage,
|
*pre,
|
||||||
ResultReplayToSettled,
|
ResultReplayToSettled,
|
||||||
), nil
|
), nil
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user