Skip to content

Commit

Permalink
connectd: remove second gossip fd.
Browse files Browse the repository at this point in the history
Now we only send and receive gossip messages on this fd.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
  • Loading branch information
rustyrussell committed Dec 20, 2021
1 parent eb178b8 commit 39c241b
Show file tree
Hide file tree
Showing 9 changed files with 17 additions and 52 deletions.
5 changes: 2 additions & 3 deletions connectd/connectd.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@
* thus may know how to reach certain peers. */
#define HSM_FD 3
#define GOSSIPCTL_FD 4
#define GOSSIPCTL2_FD 5

/*~ In C convention, constants are UPPERCASE macros. Not everything needs to
* be a constant, but it soothes the programmer's conscience to encapsulate
Expand Down Expand Up @@ -1519,7 +1518,7 @@ static void connect_init(struct daemon *daemon, const u8 *msg)
announcable)));
#if DEVELOPER
if (dev_disconnect)
dev_disconnect_init(6);
dev_disconnect_init(5);
#endif
}

Expand Down Expand Up @@ -1993,7 +1992,7 @@ int main(int argc, char *argv[])
status_setup_async(daemon->master);

/* This streams gossip to and from gossipd */
daemon->gossipd = daemon_conn_new(daemon, GOSSIPCTL2_FD,
daemon->gossipd = daemon_conn_new(daemon, GOSSIPCTL_FD,
recv_gossip, NULL,
daemon);

Expand Down
30 changes: 3 additions & 27 deletions gossipd/gossipd.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ void peer_supplied_good_gossip(struct peer *peer, size_t amount)
void queue_peer_msg(struct peer *peer, const u8 *msg TAKES)
{
u8 *outermsg = towire_gossipd_send_gossip(NULL, &peer->id, msg);
daemon_conn_send(peer->daemon->connectd2, take(outermsg));
daemon_conn_send(peer->daemon->connectd, take(outermsg));

if (taken(msg))
tal_free(msg);
Expand Down Expand Up @@ -530,27 +530,6 @@ static struct io_plan *connectd_req(struct io_conn *conn,
{
enum connectd_gossipd_wire t = fromwire_peektype(msg);

switch (t) {
/* This is not for this fd! */
case WIRE_GOSSIPD_RECV_GOSSIP:
case WIRE_GOSSIPD_NEW_PEER:
case WIRE_GOSSIPD_PEER_GONE:
/* We send these, don't receive them. */
case WIRE_GOSSIPD_SEND_GOSSIP:
break;
}

status_failed(STATUS_FAIL_INTERNAL_ERROR,
"Bad msg from connectd: %s", tal_hex(tmpctx, msg));
}

/*~ connectd's input handler is very simple. */
static struct io_plan *connectd_gossip_req(struct io_conn *conn,
const u8 *msg,
struct daemon *daemon)
{
enum connectd_gossipd_wire t = fromwire_peektype(msg);

switch (t) {
case WIRE_GOSSIPD_RECV_GOSSIP:
handle_recv_gossip(daemon, msg);
Expand All @@ -573,7 +552,7 @@ static struct io_plan *connectd_gossip_req(struct io_conn *conn,
"Bad msg from connectd2: %s", tal_hex(tmpctx, msg));

handled:
return daemon_conn_read_next(conn, daemon->connectd2);
return daemon_conn_read_next(conn, daemon->connectd);
}

/* BOLT #7:
Expand Down Expand Up @@ -731,14 +710,11 @@ static void gossip_init(struct daemon *daemon, const u8 *msg)
/* Fire up the seeker! */
daemon->seeker = new_seeker(daemon);

/* connectd is already started, and uses this fd to ask us things. */
/* connectd is already started, and uses this fd to feed/recv gossip. */
daemon->connectd = daemon_conn_new(daemon, CONNECTD_FD,
connectd_req,
maybe_send_query_responses, daemon);

daemon->connectd2 = daemon_conn_new(daemon, CONNECTD2_FD,
connectd_gossip_req, NULL, daemon);

/* OK, we are ready. */
daemon_conn_send(daemon->master,
take(towire_gossipd_init_reply(NULL)));
Expand Down
1 change: 0 additions & 1 deletion gossipd/gossipd.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ struct daemon {

/* Connection to connect daemon. */
struct daemon_conn *connectd;
struct daemon_conn *connectd2;

/* Routing information */
struct routing_state *rstate;
Expand Down
12 changes: 3 additions & 9 deletions lightningd/connect_control.c
Original file line number Diff line number Diff line change
Expand Up @@ -477,9 +477,9 @@ static void connect_init_done(struct subd *connectd,
io_break(connectd);
}

int connectd_init(struct lightningd *ld, int *gossipd_fd2)
int connectd_init(struct lightningd *ld)
{
int fds[2], fds2[2];
int fds[2];
u8 *msg;
int hsmfd;
struct wireaddr_internal *wireaddrs = ld->proposed_wireaddr;
Expand All @@ -492,16 +492,11 @@ int connectd_init(struct lightningd *ld, int *gossipd_fd2)
if (socketpair(AF_LOCAL, SOCK_STREAM, 0, fds) != 0)
fatal("Could not socketpair for connectd<->gossipd");

if (socketpair(AF_LOCAL, SOCK_STREAM, 0, fds2) != 0)
fatal("Could not socketpair for connectd<->gossipd 2");

hsmfd = hsm_get_global_fd(ld, HSM_CAP_ECDH);

ld->connectd = new_global_subd(ld, "lightning_connectd",
connectd_wire_name, connectd_msg,
take(&hsmfd),
take(&fds[1]),
take(&fds2[1]),
take(&hsmfd), take(&fds[1]),
#if DEVELOPER
/* Not take(): we share it */
ld->dev_disconnect_fd >= 0 ?
Expand Down Expand Up @@ -542,7 +537,6 @@ int connectd_init(struct lightningd *ld, int *gossipd_fd2)
/* Wait for init_reply */
io_loop(NULL, NULL);

*gossipd_fd2 = fds2[0];
return fds[0];
}

Expand Down
2 changes: 1 addition & 1 deletion lightningd/connect_control.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ struct pubkey;
struct wireaddr_internal;

/* Returns fd for gossipd to talk to connectd */
int connectd_init(struct lightningd *ld, int *gossipd_fd2);
int connectd_init(struct lightningd *ld);
void connectd_activate(struct lightningd *ld);

void try_reconnect(struct channel *channel, u32 seconds_delay,
Expand Down
7 changes: 2 additions & 5 deletions lightningd/gossip_control.c
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ static void gossipd_init_done(struct subd *gossipd,

/* Create the `gossipd` subdaemon and send the initialization
* message */
void gossip_init(struct lightningd *ld, int connectd_fd, int connectd_fd2)
void gossip_init(struct lightningd *ld, int connectd_fd)
{
u8 *msg;
int hsmfd;
Expand All @@ -223,10 +223,7 @@ void gossip_init(struct lightningd *ld, int connectd_fd, int connectd_fd2)

ld->gossip = new_global_subd(ld, "lightning_gossipd",
gossipd_wire_name, gossip_msg,
take(&hsmfd),
take(&connectd_fd),
take(&connectd_fd2),
NULL);
take(&hsmfd), take(&connectd_fd), NULL);
if (!ld->gossip)
err(1, "Could not subdaemon gossip");

Expand Down
2 changes: 1 addition & 1 deletion lightningd/gossip_control.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
struct channel;
struct lightningd;

void gossip_init(struct lightningd *ld, int connectd_fd, int connectd_fd2);
void gossip_init(struct lightningd *ld, int connectd_fd);

void gossipd_notify_spend(struct lightningd *ld,
const struct short_channel_id *scid);
Expand Down
6 changes: 3 additions & 3 deletions lightningd/lightningd.c
Original file line number Diff line number Diff line change
Expand Up @@ -846,7 +846,7 @@ int main(int argc, char *argv[])
{
struct lightningd *ld;
u32 min_blockheight, max_blockheight;
int connectd_gossipd_fd, connectd_gossipd_fd2;
int connectd_gossipd_fd;
int stop_fd;
struct timers *timers;
const char *stop_response;
Expand Down Expand Up @@ -1022,7 +1022,7 @@ int main(int argc, char *argv[])
* which knows (via node_announcement messages) the public
* addresses of nodes, so connectd_init hands it one end of a
* socket pair, and gives us the other */
connectd_gossipd_fd = connectd_init(ld, &connectd_gossipd_fd2);
connectd_gossipd_fd = connectd_init(ld);

/*~ We do every database operation within a transaction; usually this
* is covered by the infrastructure (eg. opening a transaction before
Expand Down Expand Up @@ -1074,7 +1074,7 @@ int main(int argc, char *argv[])
* channel_announcement, channel_update, node_announcement and gossip
* queries. It also hands us the latest channel_updates for our
* channels. */
gossip_init(ld, connectd_gossipd_fd, connectd_gossipd_fd2);
gossip_init(ld, connectd_gossipd_fd);

/*~ Create RPC socket: now lightning-cli can send us JSON RPC commands
* over a UNIX domain socket specified by `ld->rpc_filename`. */
Expand Down
4 changes: 2 additions & 2 deletions lightningd/test/run-find_my_abspath.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ void coin_mvts_init_count(struct lightningd *ld UNNEEDED)
void connectd_activate(struct lightningd *ld UNNEEDED)
{ fprintf(stderr, "connectd_activate called!\n"); abort(); }
/* Generated stub for connectd_init */
int connectd_init(struct lightningd *ld UNNEEDED, int *gossipd_fd2 UNNEEDED)
int connectd_init(struct lightningd *ld UNNEEDED)
{ fprintf(stderr, "connectd_init called!\n"); abort(); }
/* Generated stub for daemon_poll */
int daemon_poll(struct pollfd *fds UNNEEDED, nfds_t nfds UNNEEDED, int timeout UNNEEDED)
Expand Down Expand Up @@ -95,7 +95,7 @@ bool fromwire_status_peer_error(const tal_t *ctx UNNEEDED, const void *p UNNEEDE
bool fromwire_status_version(const tal_t *ctx UNNEEDED, const void *p UNNEEDED, wirestring **version UNNEEDED)
{ fprintf(stderr, "fromwire_status_version called!\n"); abort(); }
/* Generated stub for gossip_init */
void gossip_init(struct lightningd *ld UNNEEDED, int connectd_fd UNNEEDED, int connectd_fd2 UNNEEDED)
void gossip_init(struct lightningd *ld UNNEEDED, int connectd_fd UNNEEDED)
{ fprintf(stderr, "gossip_init called!\n"); abort(); }
/* Generated stub for gossip_notify_new_block */
void gossip_notify_new_block(struct lightningd *ld UNNEEDED, u32 blockheight UNNEEDED)
Expand Down

0 comments on commit 39c241b

Please sign in to comment.