Skip to content

Commit

Permalink
gossipd: remove assert which can trigger.
Browse files Browse the repository at this point in the history
We can actually fail to find a shorter route, but it's a fairly obscure case.

Fixes: #3517
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
  • Loading branch information
rustyrussell committed Feb 14, 2020
1 parent 243078a commit 77e3df0
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions gossipd/routing.c
Original file line number Diff line number Diff line change
Expand Up @@ -1217,10 +1217,19 @@ find_shorter_route(const tal_t *ctx, struct routing_state *rstate,
unvisited, shortest_cost_function);
dijkstra_cleanup(unvisited);

/* This must succeed, since we found a route before */
/* This will usually succeed, since we found a route before; however
* it's possible that it fails in corner cases. Consider that the reduced
* riskfactor may make us select a more fee-expensive route, which then
* makes us unable to complete the route due to htlc_max restrictions. */
short_route = build_route(ctx, rstate, dst, src, me, riskfactor, 1,
fuzz, base_seed, fee);
assert(short_route);
if (!short_route) {
status_info("Could't find short enough route %s->%s",
type_to_string(tmpctx, struct node_id, &dst->id),
type_to_string(tmpctx, struct node_id, &src->id));
goto out;
}

if (!amount_msat_sub(&short_cost,
dst->dijkstra.total, src->dijkstra.total))
goto bad_total;
Expand Down

0 comments on commit 77e3df0

Please sign in to comment.