From c377edfbd18c1990344508b03f3ebea89cbe3bbf Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sat, 22 Jul 2023 20:56:27 +0930 Subject: [PATCH] pay: generalize payment_succeeded(). We'll want this without an htlc_out, for self-pay. Signed-off-by: Rusty Russell --- lightningd/pay.c | 14 ++++++++------ lightningd/pay.h | 4 +++- lightningd/peer_htlcs.c | 2 +- wallet/test/run-wallet.c | 4 +++- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/lightningd/pay.c b/lightningd/pay.c index 00f8de2d7..9802be090 100644 --- a/lightningd/pay.c +++ b/lightningd/pay.c @@ -326,23 +326,25 @@ static void tell_waiters_success(struct lightningd *ld, notify_sendpay_success(ld, payment); } -void payment_succeeded(struct lightningd *ld, struct htlc_out *hout, +void payment_succeeded(struct lightningd *ld, + const struct sha256 *payment_hash, + u64 partid, u64 groupid, const struct preimage *rval) { struct wallet_payment *payment; - wallet_payment_set_status(ld->wallet, &hout->payment_hash, - hout->partid, hout->groupid, + wallet_payment_set_status(ld->wallet, payment_hash, + partid, groupid, PAYMENT_COMPLETE, rval); payment = wallet_payment_by_hash(tmpctx, ld->wallet, - &hout->payment_hash, - hout->partid, hout->groupid); + payment_hash, + partid, groupid); assert(payment); if (payment->local_invreq_id) wallet_invoice_request_mark_used(ld->wallet->db, payment->local_invreq_id); - tell_waiters_success(ld, &hout->payment_hash, payment); + tell_waiters_success(ld, payment_hash, payment); } /* Return a struct routing_failure for an immediate failure diff --git a/lightningd/pay.h b/lightningd/pay.h index 439a2bd7e..d8444f4f9 100644 --- a/lightningd/pay.h +++ b/lightningd/pay.h @@ -12,7 +12,9 @@ struct json_stream; struct wallet_payment; struct routing_failure; -void payment_succeeded(struct lightningd *ld, struct htlc_out *hout, +void payment_succeeded(struct lightningd *ld, + const struct sha256 *payment_hash, + u64 partid, u64 groupid, const struct preimage *rval); /* hout->failmsg or hout->failonion must be set. */ diff --git a/lightningd/peer_htlcs.c b/lightningd/peer_htlcs.c index cc7f8582f..69f9fe2d2 100644 --- a/lightningd/peer_htlcs.c +++ b/lightningd/peer_htlcs.c @@ -1462,7 +1462,7 @@ static void fulfill_our_htlc_out(struct channel *channel, struct htlc_out *hout, hout->msat); if (hout->am_origin) - payment_succeeded(ld, hout, preimage); + payment_succeeded(ld, &hout->payment_hash, hout->partid, hout->groupid, preimage); else if (hout->in) { fulfill_htlc(hout->in, preimage); wallet_forwarded_payment_add(ld->wallet, hout->in, diff --git a/wallet/test/run-wallet.c b/wallet/test/run-wallet.c index 9bd8ee481..c06e7222c 100644 --- a/wallet/test/run-wallet.c +++ b/wallet/test/run-wallet.c @@ -621,7 +621,9 @@ void payment_failed(struct lightningd *ld UNNEEDED, const struct htlc_out *hout void payment_store(struct lightningd *ld UNNEEDED, struct wallet_payment *payment UNNEEDED) { fprintf(stderr, "payment_store called!\n"); abort(); } /* Generated stub for payment_succeeded */ -void payment_succeeded(struct lightningd *ld UNNEEDED, struct htlc_out *hout UNNEEDED, +void payment_succeeded(struct lightningd *ld UNNEEDED, + const struct sha256 *payment_hash UNNEEDED, + u64 partid UNNEEDED, u64 groupid UNNEEDED, const struct preimage *rval UNNEEDED) { fprintf(stderr, "payment_succeeded called!\n"); abort(); } /* Generated stub for peer_restart_dualopend */