From a97d30115510213aac634d8473cf1ed7d32d8858 Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Sun, 23 Oct 2016 11:57:50 +0200 Subject: [PATCH] routing: Refuse self-route Fixes #50. Was causing a segfault because it was creating an empty route and was trying to extract the first hop as next hop. Routes through self can still be created manually, but `sendpay` would still refuse to act on them due to the missing self-link. --- daemon/routing.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/daemon/routing.c b/daemon/routing.c index 2d27fa1d6..6c1c60730 100644 --- a/daemon/routing.c +++ b/daemon/routing.c @@ -289,10 +289,15 @@ struct peer *find_route(struct lightningd_state *dstate, * at the end, and need to derive how much we need to send. */ dst = get_node(dstate, &dstate->id); src = get_node(dstate, to); + if (!src) { log_info_struct(dstate->base_log, "find_route: cannot find %s", struct pubkey, to); return NULL; + } else if (dst == src) { + log_info_struct(dstate->base_log, "find_route: this is %s, refusing to create empty route", + struct pubkey, to); + return NULL; } /* Reset all the information. */