| 1631 | } |
| 1632 | |
| 1633 | static struct command_result * |
| 1634 | payment_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 |
nothing calls this directly
no test coverage detected