Skip to content

Commit

Permalink
pytest: test connection timeout.
Browse files Browse the repository at this point in the history
Signed-off-by: Rusty Russell <[email protected]>
  • Loading branch information
rustyrussell committed Sep 11, 2020
1 parent 7f2b332 commit f658dd0
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 4 deletions.
12 changes: 8 additions & 4 deletions connectd/connectd.c
Original file line number Diff line number Diff line change
Expand Up @@ -518,7 +518,9 @@ static struct io_plan *handshake_in_success(struct io_conn *conn,
/*~ If the timer goes off, we simply free everything, which hangs up. */
static void conn_timeout(struct io_conn *conn)
{
tal_free(conn);
status_debug("conn timed out");
errno = ETIMEDOUT;
io_close(conn);
}

/*~ When we get a connection in we set up its network address then call
Expand Down Expand Up @@ -1672,9 +1674,11 @@ int main(int argc, char *argv[])
* status_failed on error. */
ecdh_hsmd_setup(HSM_FD, status_failed);

/* Should never exit. */
io_loop(NULL, NULL);
abort();
for (;;) {
struct timer *expired;
io_loop(&daemon->timers, &expired);
timer_expired(daemon, expired);
}
}

/*~ Getting bored? This was a pretty simple daemon!
Expand Down
17 changes: 17 additions & 0 deletions tests/test_connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -2634,3 +2634,20 @@ def test_nonstatic_channel(node_factory, bitcoind):

l1.pay(l2, 1000)
l1.rpc.close(l2.info['id'])


@unittest.skipIf(not DEVELOPER, "needs --dev-timeout-secs")
def test_connection_timeout(node_factory):
# l1 hears nothing back after sending INIT, should time out.
l1, l2 = node_factory.get_nodes(2,
opts=[{'dev-timeout-secs': 1,
'disconnect': ['0WIRE_INIT', '0WIRE_INIT']},
{}])

with pytest.raises(RpcError, match='timed out'):
l1.rpc.connect(l2.info['id'], 'localhost', port=l2.port)
l1.daemon.wait_for_log('conn timed out')

with pytest.raises(RpcError, match='reset by peer'):
l2.rpc.connect(l1.info['id'], 'localhost', port=l1.port)
l1.daemon.wait_for_log('conn timed out')

0 comments on commit f658dd0

Please sign in to comment.