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

Function routetracker_add_to_final

plugins/renepay/routetracker.c:47–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45}
46
47static void routetracker_add_to_final(struct routetracker *routetracker,
48 struct route *route)
49{
50 tal_arr_expand(&routetracker->finalized_routes, route);
51 tal_steal(routetracker->finalized_routes, route);
52
53 struct payment *payment =
54 payment_map_get(pay_plugin->payment_map, route->key.payment_hash);
55 assert(payment);
56 if (payment->exec_state == INVALID_STATE) {
57 /* payment is offline, collect results now and set the payment
58 * state accordingly. */
59 assert(payment_commands_empty(payment));
60 assert(payment->status == PAYMENT_FAIL ||
61 payment->status == PAYMENT_SUCCESS);
62
63 struct preimage *payment_preimage = NULL;
64 enum jsonrpc_errcode final_error = LIGHTNINGD;
65 const char *final_msg = NULL;
66
67 /* Finalized routes must be processed and removed in order to
68 * free the uncertainty network's HTLCs. */
69 payment_collect_results(payment, &payment_preimage,
70 &final_error, &final_msg);
71
72 if (payment_preimage) {
73 /* If we have the preimage that means one succeed, we
74 * inmediately finish the payment. */
75 register_payment_success(payment,
76 take(payment_preimage));
77 return;
78 }
79 if (final_msg) {
80 /* We received a sendpay result with a final error
81 * message, we inmediately finish the payment. */
82 register_payment_fail(payment, final_error, "%s",
83 final_msg);
84 return;
85 }
86 }
87}
88
89static void route_success_register(struct routetracker *routetracker,
90 struct route *route)

Callers 2

route_success_registerFunction · 0.85
route_failure_registerFunction · 0.85

Calls 4

payment_commands_emptyFunction · 0.85
payment_collect_resultsFunction · 0.85
register_payment_successFunction · 0.85
register_payment_failFunction · 0.85

Tested by

no test coverage detected