From 05ac74fc4450b93481619a50c80704d8fa070619 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 3 Feb 2023 14:07:32 +1030 Subject: [PATCH] connectd: keep array of our listening sockets. This allows us to free them if we want to stop listening. Signed-off-by: Rusty Russell --- connectd/connectd.c | 13 ++++++++----- connectd/connectd.h | 3 +++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/connectd/connectd.c b/connectd/connectd.c index 8796a7c47..0c0023536 100644 --- a/connectd/connectd.c +++ b/connectd/connectd.c @@ -1568,11 +1568,13 @@ static void connect_activate(struct daemon *daemon, const u8 *msg) strerror(errno)); break; } - notleak(io_new_listener(daemon, - daemon->listen_fds[i]->fd, - get_in_cb(daemon->listen_fds[i] - ->is_websocket), - daemon)); + /* Add to listeners array */ + tal_arr_expand(&daemon->listeners, + io_new_listener(daemon->listeners, + daemon->listen_fds[i]->fd, + get_in_cb(daemon->listen_fds[i] + ->is_websocket), + daemon)); } } @@ -2025,6 +2027,7 @@ int main(int argc, char *argv[]) daemon = tal(NULL, struct daemon); daemon->connection_counter = 1; daemon->peers = tal(daemon, struct peer_htable); + daemon->listeners = tal_arr(daemon, struct io_listener *, 0); peer_htable_init(daemon->peers); memleak_add_helper(daemon, memleak_daemon_cb); list_head_init(&daemon->connecting); diff --git a/connectd/connectd.h b/connectd/connectd.h index 8a35a02b8..b901c7322 100644 --- a/connectd/connectd.h +++ b/connectd/connectd.h @@ -145,6 +145,9 @@ struct daemon { /* Connection to gossip daemon. */ struct daemon_conn *gossipd; + /* Any listening sockets we have. */ + struct io_listener **listeners; + /* Allow localhost to be considered "public": DEVELOPER-only option, * but for simplicity we don't #if DEVELOPER-wrap it here. */ bool dev_allow_localhost;