connectd: hold peer until we're interested.

Either because lightningd tells us it wants to talk, or because the peer
says something about a channel.

We also introduce a behavior change: we disconnect after a failed open.
We might want to modify this later, but we it's a side-effect of openingd
not holding onto idle connections.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2022-03-23 06:57:29 +10:30
parent 77b1087cdf
commit 2424b7dea8
24 changed files with 429 additions and 148 deletions

View File

@@ -2337,6 +2337,7 @@ def test_listforwards(node_factory, bitcoind):
assert len(c24_forwards) == 1
@pytest.mark.openchannel('v1')
def test_version_reexec(node_factory, bitcoind):
badopeningd = os.path.join(os.path.dirname(__file__), "plugins", "badopeningd.sh")
version = subprocess.check_output(['lightningd/lightningd',
@@ -2358,7 +2359,12 @@ def test_version_reexec(node_factory, bitcoind):
'fff6')) # type
f.write(bytes('badversion\0', encoding='utf8'))
# Opening a channel will fire subd.
l1.rpc.connect(l2.info['id'], 'localhost', l2.port)
try:
l1.fundchannel(l2)
except RpcError:
pass
l1.daemon.wait_for_log("openingd.*version 'badversion' not '{}': restarting".format(version))