From 16e9ba03614cfd9390bf1ef242e6694362f34858 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 23 Mar 2022 06:56:16 +1030 Subject: [PATCH] connectd: fix confusing names. The message from lightningd simply acknowleges that we are allowed to discard the peer (because no subdaemons are talking to it anymore). This difference becomes more stark once connectd holds on to idle peers. Signed-off-by: Rusty Russell --- connectd/connectd.c | 18 +++++++++--------- connectd/connectd.h | 5 +++-- connectd/connectd_wire.csv | 6 +++--- connectd/multiplex.c | 10 +++++----- lightningd/channel.c | 2 +- lightningd/connect_control.c | 2 +- lightningd/opening_common.c | 2 +- wallet/test/run-wallet.c | 6 +++--- 8 files changed, 26 insertions(+), 25 deletions(-) diff --git a/connectd/connectd.c b/connectd/connectd.c index dc0c2f798..cb19a78fa 100644 --- a/connectd/connectd.c +++ b/connectd/connectd.c @@ -311,7 +311,7 @@ static struct peer *new_peer(struct daemon *daemon, peer->peer_in = NULL; peer->sent_to_peer = NULL; peer->urgent = false; - peer->told_to_close = false; + peer->ready_to_die = false; peer->peer_outq = msg_queue_new(peer, false); #if DEVELOPER @@ -1793,7 +1793,7 @@ static void try_connect_peer(struct daemon *daemon, /* If it's exiting now, we've raced: reconnect after */ if (tal_count(existing->subds) != 0 && existing->to_peer - && !existing->told_to_close) + && !existing->ready_to_die) return; } @@ -1893,7 +1893,7 @@ void peer_conn_closed(struct peer *peer) /* These should be closed already! */ assert(!peer->subds); assert(!peer->to_peer); - assert(peer->told_to_close); + assert(peer->ready_to_die); /* Tell gossipd to stop asking this peer gossip queries */ daemon_conn_send(peer->daemon->gossipd, @@ -1930,13 +1930,13 @@ static void cleanup_dead_peer(struct daemon *daemon, const struct node_id *id) close_peer_conn(peer); } -/* lightningd tells us a peer has disconnected. */ -static void peer_disconnected(struct daemon *daemon, const u8 *msg) +/* lightningd tells us a peer should be disconnected. */ +static void peer_discard(struct daemon *daemon, const u8 *msg) { struct node_id id; - if (!fromwire_connectd_peer_disconnected(msg, &id)) - master_badmsg(WIRE_CONNECTD_PEER_DISCONNECTED, msg); + if (!fromwire_connectd_discard_peer(msg, &id)) + master_badmsg(WIRE_CONNECTD_DISCARD_PEER, msg); cleanup_dead_peer(daemon, &id); } @@ -2001,8 +2001,8 @@ static struct io_plan *recv_req(struct io_conn *conn, connect_to_peer(daemon, msg); goto out; - case WIRE_CONNECTD_PEER_DISCONNECTED: - peer_disconnected(daemon, msg); + case WIRE_CONNECTD_DISCARD_PEER: + peer_discard(daemon, msg); goto out; case WIRE_CONNECTD_PEER_FINAL_MSG: diff --git a/connectd/connectd.h b/connectd/connectd.h index e75337f34..ce488a907 100644 --- a/connectd/connectd.h +++ b/connectd/connectd.h @@ -59,8 +59,9 @@ struct peer { /* Final message to send to peer (and hangup) */ u8 *final_msg; - /* Set when we want to close. */ - bool told_to_close; + /* Set once lightningd says it's OK to close (subd tells it + * it's done). */ + bool ready_to_die; /* When socket has Nagle overridden */ bool urgent; diff --git a/connectd/connectd_wire.csv b/connectd/connectd_wire.csv index de580c0e3..577c882cd 100644 --- a/connectd/connectd_wire.csv +++ b/connectd/connectd_wire.csv @@ -71,9 +71,9 @@ msgdata,connectd_peer_connected,incoming,bool, msgdata,connectd_peer_connected,flen,u16, msgdata,connectd_peer_connected,features,u8,flen -# master -> connectd: peer has disconnected. -msgtype,connectd_peer_disconnected,2015 -msgdata,connectd_peer_disconnected,id,node_id, +# master -> connectd: peer no longer wanted, you can disconnect. +msgtype,connectd_discard_peer,2015 +msgdata,connectd_discard_peer,id,node_id, # master -> connectd: give message to peer and disconnect. msgtype,connectd_peer_final_msg,2003 diff --git a/connectd/multiplex.c b/connectd/multiplex.c index 91f221b56..49198176d 100644 --- a/connectd/multiplex.c +++ b/connectd/multiplex.c @@ -715,7 +715,7 @@ static struct io_plan *read_body_from_peer_done(struct io_conn *peer_conn, return read_hdr_from_peer(peer_conn, peer); /* Don't process packets while we're closing */ - if (peer->told_to_close) + if (peer->ready_to_die) return read_hdr_from_peer(peer_conn, peer); /* If we swallow this, just try again. */ @@ -825,14 +825,14 @@ static void destroy_subd(struct subd *subd) io_wake(&peer->peer_in); /* If no peer, finally time to close */ - if (!peer->to_peer && peer->told_to_close) + if (!peer->to_peer && peer->ready_to_die) peer_conn_closed(peer); } void close_peer_conn(struct peer *peer) { /* Make write_to_peer do flush after writing */ - peer->told_to_close = true; + peer->ready_to_die = true; /* Already dead? */ if (!peer->subds && !peer->to_peer) { @@ -883,7 +883,7 @@ static void destroy_peer_conn(struct io_conn *peer_conn, struct peer *peer) return; } - if (peer->told_to_close) + if (peer->ready_to_die) peer_conn_closed(peer); } @@ -905,7 +905,7 @@ struct io_plan *multiplex_peer_setup(struct io_conn *peer_conn, void multiplex_final_msg(struct peer *peer, const u8 *final_msg TAKES) { - peer->told_to_close = true; + peer->ready_to_die = true; peer->final_msg = tal_dup_talarr(peer, u8, final_msg); if (!peer->subds) io_wake(peer->peer_outq); diff --git a/lightningd/channel.c b/lightningd/channel.c index 6976a83cd..b5b1fa2ad 100644 --- a/lightningd/channel.c +++ b/lightningd/channel.c @@ -42,7 +42,7 @@ void channel_set_owner(struct channel *channel, struct subd *owner) channel->peer->connected = false; if (channel->peer->ld->connectd) { u8 *msg; - msg = towire_connectd_peer_disconnected( + msg = towire_connectd_discard_peer( NULL, &channel->peer->id); subd_send_msg(channel->peer->ld->connectd, diff --git a/lightningd/connect_control.c b/lightningd/connect_control.c index a45a1cd3e..321f9c2a2 100644 --- a/lightningd/connect_control.c +++ b/lightningd/connect_control.c @@ -413,7 +413,7 @@ static unsigned connectd_msg(struct subd *connectd, const u8 *msg, const int *fd case WIRE_CONNECTD_INIT: case WIRE_CONNECTD_ACTIVATE: case WIRE_CONNECTD_CONNECT_TO_PEER: - case WIRE_CONNECTD_PEER_DISCONNECTED: + case WIRE_CONNECTD_DISCARD_PEER: case WIRE_CONNECTD_DEV_MEMLEAK: case WIRE_CONNECTD_PEER_FINAL_MSG: case WIRE_CONNECTD_PING: diff --git a/lightningd/opening_common.c b/lightningd/opening_common.c index 542dfe2d2..f57c35572 100644 --- a/lightningd/opening_common.c +++ b/lightningd/opening_common.c @@ -103,7 +103,7 @@ void uncommitted_channel_disconnect(struct uncommitted_channel *uc, enum log_level level, const char *desc) { - u8 *msg = towire_connectd_peer_disconnected(tmpctx, &uc->peer->id); + u8 *msg = towire_connectd_discard_peer(tmpctx, &uc->peer->id); log_(uc->log, level, NULL, false, "%s", desc); /* NULL when we're shutting down */ if (uc->peer->ld->connectd) diff --git a/wallet/test/run-wallet.c b/wallet/test/run-wallet.c index 71280026a..dd3d5ce66 100644 --- a/wallet/test/run-wallet.c +++ b/wallet/test/run-wallet.c @@ -720,9 +720,9 @@ u8 *towire_channeld_offer_htlc(const tal_t *ctx UNNEEDED, struct amount_msat amo /* Generated stub for towire_channeld_sending_commitsig_reply */ u8 *towire_channeld_sending_commitsig_reply(const tal_t *ctx UNNEEDED) { fprintf(stderr, "towire_channeld_sending_commitsig_reply called!\n"); abort(); } -/* Generated stub for towire_connectd_peer_disconnected */ -u8 *towire_connectd_peer_disconnected(const tal_t *ctx UNNEEDED, const struct node_id *id UNNEEDED) -{ fprintf(stderr, "towire_connectd_peer_disconnected called!\n"); abort(); } +/* Generated stub for towire_connectd_discard_peer */ +u8 *towire_connectd_discard_peer(const tal_t *ctx UNNEEDED, const struct node_id *id UNNEEDED) +{ fprintf(stderr, "towire_connectd_discard_peer called!\n"); abort(); } /* Generated stub for towire_connectd_peer_final_msg */ u8 *towire_connectd_peer_final_msg(const tal_t *ctx UNNEEDED, const struct node_id *id UNNEEDED, const u8 *msg UNNEEDED) { fprintf(stderr, "towire_connectd_peer_final_msg called!\n"); abort(); }