diff --git a/plugins/libplugin-pay.c b/plugins/libplugin-pay.c index ad1c1fec6..bfc73ddd5 100644 --- a/plugins/libplugin-pay.c +++ b/plugins/libplugin-pay.c @@ -807,6 +807,12 @@ static struct command_result *payment_getroute(struct payment *p) p->step = PAYMENT_STEP_GOT_ROUTE; p->route = route_hops_from_route(p, p, r); + if (tal_count(p->route) == 0) { + payment_root(p)->abort = true; + payment_fail(p, "Empty route returned by getroute, are you " + "trying to pay yourself?"); + } + fee = payment_route_fee(p); /* Ensure that our fee and CLTV budgets are respected. */ diff --git a/tests/test_pay.py b/tests/test_pay.py index e44780021..3249e8d0c 100644 --- a/tests/test_pay.py +++ b/tests/test_pay.py @@ -4134,7 +4134,6 @@ def test_sendinvoice(node_factory, bitcoind): 'label': 'test sendinvoice refund'}) -@pytest.mark.xfail(strict=True) def test_self_pay(node_factory): """Repro test for issue 4345: pay ourselves via the pay plugin. @@ -4142,4 +4141,6 @@ def test_self_pay(node_factory): l1, l2 = node_factory.line_graph(2, wait_for_announce=True) inv = l1.rpc.invoice(10000, 'test', 'test')['bolt11'] - l1.rpc.pay(inv) + + with pytest.raises(RpcError): + l1.rpc.pay(inv)