plugin: Do not return multiple times from pay

While we were unsetting the `payment->cmd` in case of a success to signal that
we should not return to the JSON-RPC command twice, we were not doing that in
the case of failures. This was causing multiple responses to a single incoming
command, and `lightningd` was correctly killing the plugin. This issue was
introduced through early returns (anything setting `payment->abort=true`) and
was caused in Rusty's case through an MPP timeout.

Fixes #3847
Reported-by: Rusty Russell <@rustyrussell>
Signed-off-by: Christian Decker <@cdecker>
This commit is contained in:
Christian Decker
2020-07-18 08:37:28 +02:00
parent 734f292695
commit 2146a548bd
2 changed files with 10 additions and 12 deletions

View File

@@ -1499,7 +1499,6 @@ def test_coin_movement_notices(node_factory, bitcoind, chainparams):
check_coin_moves_idx(l2)
@pytest.mark.xfail(strict=True)
def test_3847_repro(node_factory, bitcoind):
"""Reproduces the issue in #3847: duplicate response from plugin