MCPcopy Create free account
hub / github.com/ElementsProject/lightning / payment_waitsendpay_finished

Function payment_waitsendpay_finished

plugins/libplugin-pay.c:1633–1698  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1631}
1632
1633static struct command_result *
1634payment_waitsendpay_finished(struct command *cmd,
1635 const char *method,
1636 const char *buffer,
1637 const jsmntok_t *toks, struct payment *p)
1638{
1639 u8 *update;
1640
1641 assert(p->route != NULL);
1642
1643 p->end_time = clock_time();
1644 p->result = tal_sendpay_result_from_json(p, buffer, toks);
1645
1646 if (p->result == NULL) {
1647 paymod_log(p, LOG_UNUSUAL,
1648 "Unable to parse `waitsendpay` result: %.*s",
1649 json_tok_full_len(toks),
1650 json_tok_full(buffer, toks));
1651 payment_set_step(p, PAYMENT_STEP_FAILED);
1652 return payment_continue(p);
1653 }
1654
1655 payment_result_infer(p->route, p->result);
1656
1657 if (p->result->state == PAYMENT_COMPLETE) {
1658 paymod_log(p, LOG_INFORM,
1659 "HTLC result state=success, sent=%s, deliver=%s",
1660 fmt_amount_msat(tmpctx, p->result->amount_sent),
1661 fmt_amount_msat(tmpctx, p->final_amount));
1662 payment_set_step(p, PAYMENT_STEP_SUCCESS);
1663 return payment_continue(p);
1664 }
1665
1666 payment_chanhints_unapply_route(p);
1667
1668 /* Tell gossipd, if we received an update */
1669 update = channel_update_from_onion_error(tmpctx, p->result->raw_message);
1670 if (update) {
1671 struct out_req *req;
1672 paymod_log(p, LOG_DBG,
1673 "Extracted channel_update %s from onionreply %s",
1674 tal_hex(tmpctx, update),
1675 tal_hex(tmpctx, p->result->raw_message));
1676 req = jsonrpc_request_start(payment_cmd(p), "addgossip",
1677 payment_addgossip_success,
1678 payment_addgossip_failure, p);
1679 json_add_hex_talarr(req->js, "message", update);
1680
1681 paymod_log(p, LOG_INFORM,
1682 "HTLC result state=failed, sent=%s, todeliver=%s, "
1683 "code=%d (%s)",
1684 fmt_amount_msat(tmpctx, p->result->amount_sent),
1685 fmt_amount_msat(tmpctx, p->final_amount),
1686 p->result->code, p->result->failcodename);
1687
1688 return send_outreq(req);
1689 }
1690

Callers

nothing calls this directly

Calls 15

clock_timeFunction · 0.85
paymod_logFunction · 0.85
payment_set_stepFunction · 0.85
payment_result_inferFunction · 0.85
tal_hexFunction · 0.85
payment_cmdFunction · 0.85
json_add_hex_talarrFunction · 0.85
payment_continueFunction · 0.70

Tested by

no test coverage detected