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 <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2022-03-23 06:56:16 +10:30
parent 0cba062318
commit 16e9ba0361
8 changed files with 26 additions and 25 deletions

View file

@ -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:

View file

@ -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;

View file

@ -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

1 #include <bitcoin/block.h>
71 msgdata,connectd_peer_final_msg,len,u16,
72 msgdata,connectd_peer_final_msg,msg,u8,len
73 # master -> connectd: do you have a memleak?
74 msgtype,connectd_dev_memleak,2033
75 msgtype,connectd_dev_memleak_reply,2133
76 msgdata,connectd_dev_memleak_reply,leak,bool,
77 # Ping/pong test. Waits for a reply if it expects one.
78 msgtype,connectd_ping,2030
79 msgdata,connectd_ping,id,node_id,

View file

@ -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);

View file

@ -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,

View file

@ -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:

View file

@ -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)

View file

@ -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(); }