gossipd: pass node_id to queue_peer_msg, not peer.

This is easier for future callers, which don't have a convenient peer
structure: in particular, asynchronous processing of gossip for peers.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2024-01-31 14:57:33 +10:30
parent 8cfbc1e7ad
commit 275d59ead4
7 changed files with 27 additions and 16 deletions

View File

@@ -86,10 +86,12 @@ void peer_supplied_good_gossip(struct daemon *daemon,
/* Queue a gossip message for the peer: connectd simply forwards it to
* the peer. */
void queue_peer_msg(struct peer *peer, const u8 *msg TAKES)
void queue_peer_msg(struct daemon *daemon,
const struct node_id *peer,
const u8 *msg TAKES)
{
u8 *outermsg = towire_gossipd_send_gossip(NULL, &peer->id, msg);
daemon_conn_send(peer->daemon->connectd, take(outermsg));
u8 *outermsg = towire_gossipd_send_gossip(NULL, peer, msg);
daemon_conn_send(daemon->connectd, take(outermsg));
if (taken(msg))
tal_free(msg);
@@ -100,7 +102,8 @@ void queue_peer_from_store(struct peer *peer,
const struct broadcastable *bcast)
{
struct gossip_store *gs = peer->daemon->rstate->gs;
queue_peer_msg(peer, take(gossip_store_get(NULL, gs, bcast->index)));
queue_peer_msg(peer->daemon, &peer->id,
take(gossip_store_get(NULL, gs, bcast->index)));
}
/*~ We don't actually keep node_announcements in memory; we keep them in
@@ -494,7 +497,7 @@ static void handle_recv_gossip(struct daemon *daemon, const u8 *outermsg)
handled_msg:
if (err)
queue_peer_msg(peer, take(err));
queue_peer_msg(peer->daemon, &peer->id, take(err));
}
/*~ connectd's input handler is very simple. */

View File

@@ -129,7 +129,9 @@ struct peer *next_random_peer(struct daemon *daemon,
/* Queue a gossip message for the peer: the subdaemon on the other end simply
* forwards it to the peer. */
void queue_peer_msg(struct peer *peer, const u8 *msg TAKES);
void queue_peer_msg(struct daemon *daemon,
const struct node_id *peer,
const u8 *msg TAKES);
/* Queue a gossip_store message for the peer: the subdaemon on the
* other end simply forwards it to the peer. */

View File

@@ -147,7 +147,7 @@ bool query_short_channel_ids(struct daemon *daemon,
msg = towire_query_short_channel_ids(NULL,
&chainparams->genesis_blockhash,
encoded, tlvs);
queue_peer_msg(peer, take(msg));
queue_peer_msg(daemon, &peer->id, take(msg));
peer->scid_query_outstanding = true;
peer->scid_query_cb = cb;
@@ -320,7 +320,7 @@ static void send_reply_channel_range(struct peer *peer,
first_blocknum,
number_of_blocks,
final, encoded_scids, tlvs);
queue_peer_msg(peer, take(msg));
queue_peer_msg(peer->daemon, &peer->id, take(msg));
}
/* Helper to get non-signature, non-timestamp parts of (valid!) channel_update */
@@ -617,7 +617,7 @@ const u8 *handle_query_channel_range(struct peer *peer, const u8 *msg)
&chain_hash));
u8 *end = towire_reply_channel_range(NULL, &chain_hash, first_blocknum,
number_of_blocks, false, NULL, NULL);
queue_peer_msg(peer, take(end));
queue_peer_msg(peer->daemon, &peer->id, take(end));
return NULL;
}
@@ -1052,7 +1052,7 @@ static bool maybe_send_query_responses_peer(struct peer *peer)
u8 *end = towire_reply_short_channel_ids_end(peer,
&chainparams->genesis_blockhash,
true);
queue_peer_msg(peer, take(end));
queue_peer_msg(peer->daemon, &peer->id, take(end));
/* We're done! Clean up so we simply pass-through next time. */
peer->scid_queries = tal_free(peer->scid_queries);
@@ -1107,7 +1107,7 @@ bool query_channel_range(struct daemon *daemon,
msg = towire_query_channel_range(NULL, &chainparams->genesis_blockhash,
first_blocknum, number_of_blocks,
tlvs);
queue_peer_msg(peer, take(msg));
queue_peer_msg(peer->daemon, &peer->id, take(msg));
peer->range_first_blocknum = first_blocknum;
peer->range_end_blocknum = first_blocknum + number_of_blocks;
peer->range_blocks_outstanding = number_of_blocks;

View File

@@ -204,7 +204,7 @@ static void disable_gossip_stream(struct seeker *seeker, struct peer *peer)
&chainparams->genesis_blockhash,
UINT32_MAX,
UINT32_MAX);
queue_peer_msg(peer, take(msg));
queue_peer_msg(peer->daemon, &peer->id, take(msg));
}
static void enable_gossip_stream(struct seeker *seeker, struct peer *peer)
@@ -226,7 +226,7 @@ static void enable_gossip_stream(struct seeker *seeker, struct peer *peer)
&chainparams->genesis_blockhash,
start,
UINT32_MAX);
queue_peer_msg(peer, take(msg));
queue_peer_msg(peer->daemon, &peer->id, take(msg));
}
static void normal_gossip_start(struct seeker *seeker, struct peer *peer)

View File

@@ -75,7 +75,9 @@ void queue_peer_from_store(struct peer *peer UNNEEDED,
const struct broadcastable *bcast UNNEEDED)
{ fprintf(stderr, "queue_peer_from_store called!\n"); abort(); }
/* Generated stub for queue_peer_msg */
void queue_peer_msg(struct peer *peer UNNEEDED, const u8 *msg TAKES UNNEEDED)
void queue_peer_msg(struct daemon *daemon UNNEEDED,
const struct node_id *peer UNNEEDED,
const u8 *msg TAKES UNNEEDED)
{ fprintf(stderr, "queue_peer_msg called!\n"); abort(); }
/* Generated stub for status_fmt */
void status_fmt(enum log_level level UNNEEDED,

View File

@@ -79,7 +79,9 @@ void queue_peer_from_store(struct peer *peer UNNEEDED,
const struct broadcastable *bcast UNNEEDED)
{ fprintf(stderr, "queue_peer_from_store called!\n"); abort(); }
/* Generated stub for queue_peer_msg */
void queue_peer_msg(struct peer *peer UNNEEDED, const u8 *msg TAKES UNNEEDED)
void queue_peer_msg(struct daemon *daemon UNNEEDED,
const struct node_id *peer UNNEEDED,
const u8 *msg TAKES UNNEEDED)
{ fprintf(stderr, "queue_peer_msg called!\n"); abort(); }
/* Generated stub for towire_warningfmt */
u8 *towire_warningfmt(const tal_t *ctx UNNEEDED,

View File

@@ -62,7 +62,9 @@ bool query_short_channel_ids(struct daemon *daemon UNNEEDED,
void (*cb)(struct peer *peer_ UNNEEDED, bool complete))
{ fprintf(stderr, "query_short_channel_ids called!\n"); abort(); }
/* Generated stub for queue_peer_msg */
void queue_peer_msg(struct peer *peer UNNEEDED, const u8 *msg TAKES UNNEEDED)
void queue_peer_msg(struct daemon *daemon UNNEEDED,
const struct node_id *peer UNNEEDED,
const u8 *msg TAKES UNNEEDED)
{ fprintf(stderr, "queue_peer_msg called!\n"); abort(); }
/* Generated stub for random_select */
bool random_select(double weight UNNEEDED, double *tot_weight UNNEEDED)