mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-20 07:34:24 +01:00
connectd: remove second gossip fd.
Now we only send and receive gossip messages on this fd. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -53,7 +53,6 @@
|
|||||||
* thus may know how to reach certain peers. */
|
* thus may know how to reach certain peers. */
|
||||||
#define HSM_FD 3
|
#define HSM_FD 3
|
||||||
#define GOSSIPCTL_FD 4
|
#define GOSSIPCTL_FD 4
|
||||||
#define GOSSIPCTL2_FD 5
|
|
||||||
|
|
||||||
/*~ In C convention, constants are UPPERCASE macros. Not everything needs to
|
/*~ In C convention, constants are UPPERCASE macros. Not everything needs to
|
||||||
* be a constant, but it soothes the programmer's conscience to encapsulate
|
* be a constant, but it soothes the programmer's conscience to encapsulate
|
||||||
@@ -1528,7 +1527,7 @@ static void connect_init(struct daemon *daemon, const u8 *msg)
|
|||||||
announcable)));
|
announcable)));
|
||||||
#if DEVELOPER
|
#if DEVELOPER
|
||||||
if (dev_disconnect)
|
if (dev_disconnect)
|
||||||
dev_disconnect_init(6);
|
dev_disconnect_init(5);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2027,7 +2026,7 @@ int main(int argc, char *argv[])
|
|||||||
status_setup_async(daemon->master);
|
status_setup_async(daemon->master);
|
||||||
|
|
||||||
/* This streams gossip to and from gossipd */
|
/* 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,
|
recv_gossip, NULL,
|
||||||
daemon);
|
daemon);
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
void queue_peer_msg(struct peer *peer, const u8 *msg TAKES)
|
||||||
{
|
{
|
||||||
u8 *outermsg = towire_gossipd_send_gossip(NULL, &peer->id, msg);
|
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))
|
if (taken(msg))
|
||||||
tal_free(msg);
|
tal_free(msg);
|
||||||
@@ -531,27 +531,6 @@ static struct io_plan *connectd_req(struct io_conn *conn,
|
|||||||
{
|
{
|
||||||
enum connectd_gossipd_wire t = fromwire_peektype(msg);
|
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) {
|
switch (t) {
|
||||||
case WIRE_GOSSIPD_RECV_GOSSIP:
|
case WIRE_GOSSIPD_RECV_GOSSIP:
|
||||||
handle_recv_gossip(daemon, msg);
|
handle_recv_gossip(daemon, msg);
|
||||||
@@ -574,7 +553,7 @@ static struct io_plan *connectd_gossip_req(struct io_conn *conn,
|
|||||||
"Bad msg from connectd2: %s", tal_hex(tmpctx, msg));
|
"Bad msg from connectd2: %s", tal_hex(tmpctx, msg));
|
||||||
|
|
||||||
handled:
|
handled:
|
||||||
return daemon_conn_read_next(conn, daemon->connectd2);
|
return daemon_conn_read_next(conn, daemon->connectd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BOLT #7:
|
/* BOLT #7:
|
||||||
@@ -732,14 +711,11 @@ static void gossip_init(struct daemon *daemon, const u8 *msg)
|
|||||||
/* Fire up the seeker! */
|
/* Fire up the seeker! */
|
||||||
daemon->seeker = new_seeker(daemon);
|
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,
|
daemon->connectd = daemon_conn_new(daemon, CONNECTD_FD,
|
||||||
connectd_req,
|
connectd_req,
|
||||||
maybe_send_query_responses, daemon);
|
maybe_send_query_responses, daemon);
|
||||||
|
|
||||||
daemon->connectd2 = daemon_conn_new(daemon, CONNECTD2_FD,
|
|
||||||
connectd_gossip_req, NULL, daemon);
|
|
||||||
|
|
||||||
/* OK, we are ready. */
|
/* OK, we are ready. */
|
||||||
daemon_conn_send(daemon->master,
|
daemon_conn_send(daemon->master,
|
||||||
take(towire_gossipd_init_reply(NULL)));
|
take(towire_gossipd_init_reply(NULL)));
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ struct daemon {
|
|||||||
|
|
||||||
/* Connection to connect daemon. */
|
/* Connection to connect daemon. */
|
||||||
struct daemon_conn *connectd;
|
struct daemon_conn *connectd;
|
||||||
struct daemon_conn *connectd2;
|
|
||||||
|
|
||||||
/* Routing information */
|
/* Routing information */
|
||||||
struct routing_state *rstate;
|
struct routing_state *rstate;
|
||||||
|
|||||||
@@ -475,9 +475,9 @@ static void connect_init_done(struct subd *connectd,
|
|||||||
io_break(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;
|
u8 *msg;
|
||||||
int hsmfd;
|
int hsmfd;
|
||||||
struct wireaddr_internal *wireaddrs = ld->proposed_wireaddr;
|
struct wireaddr_internal *wireaddrs = ld->proposed_wireaddr;
|
||||||
@@ -490,16 +490,11 @@ int connectd_init(struct lightningd *ld, int *gossipd_fd2)
|
|||||||
if (socketpair(AF_LOCAL, SOCK_STREAM, 0, fds) != 0)
|
if (socketpair(AF_LOCAL, SOCK_STREAM, 0, fds) != 0)
|
||||||
fatal("Could not socketpair for connectd<->gossipd");
|
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);
|
hsmfd = hsm_get_global_fd(ld, HSM_CAP_ECDH);
|
||||||
|
|
||||||
ld->connectd = new_global_subd(ld, "lightning_connectd",
|
ld->connectd = new_global_subd(ld, "lightning_connectd",
|
||||||
connectd_wire_name, connectd_msg,
|
connectd_wire_name, connectd_msg,
|
||||||
take(&hsmfd),
|
take(&hsmfd), take(&fds[1]),
|
||||||
take(&fds[1]),
|
|
||||||
take(&fds2[1]),
|
|
||||||
#if DEVELOPER
|
#if DEVELOPER
|
||||||
/* Not take(): we share it */
|
/* Not take(): we share it */
|
||||||
ld->dev_disconnect_fd >= 0 ?
|
ld->dev_disconnect_fd >= 0 ?
|
||||||
@@ -540,7 +535,6 @@ int connectd_init(struct lightningd *ld, int *gossipd_fd2)
|
|||||||
/* Wait for init_reply */
|
/* Wait for init_reply */
|
||||||
io_loop(NULL, NULL);
|
io_loop(NULL, NULL);
|
||||||
|
|
||||||
*gossipd_fd2 = fds2[0];
|
|
||||||
return fds[0];
|
return fds[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ struct pubkey;
|
|||||||
struct wireaddr_internal;
|
struct wireaddr_internal;
|
||||||
|
|
||||||
/* Returns fd for gossipd to talk to connectd */
|
/* 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 connectd_activate(struct lightningd *ld);
|
||||||
|
|
||||||
void try_reconnect(struct channel *channel, u32 seconds_delay,
|
void try_reconnect(struct channel *channel, u32 seconds_delay,
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ static void gossipd_init_done(struct subd *gossipd,
|
|||||||
|
|
||||||
/* Create the `gossipd` subdaemon and send the initialization
|
/* Create the `gossipd` subdaemon and send the initialization
|
||||||
* message */
|
* message */
|
||||||
void gossip_init(struct lightningd *ld, int connectd_fd, int connectd_fd2)
|
void gossip_init(struct lightningd *ld, int connectd_fd)
|
||||||
{
|
{
|
||||||
u8 *msg;
|
u8 *msg;
|
||||||
int hsmfd;
|
int hsmfd;
|
||||||
@@ -243,10 +243,7 @@ void gossip_init(struct lightningd *ld, int connectd_fd, int connectd_fd2)
|
|||||||
|
|
||||||
ld->gossip = new_global_subd(ld, "lightning_gossipd",
|
ld->gossip = new_global_subd(ld, "lightning_gossipd",
|
||||||
gossipd_wire_name, gossip_msg,
|
gossipd_wire_name, gossip_msg,
|
||||||
take(&hsmfd),
|
take(&hsmfd), take(&connectd_fd), NULL);
|
||||||
take(&connectd_fd),
|
|
||||||
take(&connectd_fd2),
|
|
||||||
NULL);
|
|
||||||
if (!ld->gossip)
|
if (!ld->gossip)
|
||||||
err(1, "Could not subdaemon gossip");
|
err(1, "Could not subdaemon gossip");
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
struct channel;
|
struct channel;
|
||||||
struct lightningd;
|
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,
|
void gossipd_notify_spend(struct lightningd *ld,
|
||||||
const struct short_channel_id *scid);
|
const struct short_channel_id *scid);
|
||||||
|
|||||||
@@ -850,7 +850,7 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
struct lightningd *ld;
|
struct lightningd *ld;
|
||||||
u32 min_blockheight, max_blockheight;
|
u32 min_blockheight, max_blockheight;
|
||||||
int connectd_gossipd_fd, connectd_gossipd_fd2;
|
int connectd_gossipd_fd;
|
||||||
int stop_fd;
|
int stop_fd;
|
||||||
struct timers *timers;
|
struct timers *timers;
|
||||||
const char *stop_response;
|
const char *stop_response;
|
||||||
@@ -1022,7 +1022,7 @@ int main(int argc, char *argv[])
|
|||||||
* which knows (via node_announcement messages) the public
|
* which knows (via node_announcement messages) the public
|
||||||
* addresses of nodes, so connectd_init hands it one end of a
|
* addresses of nodes, so connectd_init hands it one end of a
|
||||||
* socket pair, and gives us the other */
|
* 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
|
/*~ We do every database operation within a transaction; usually this
|
||||||
* is covered by the infrastructure (eg. opening a transaction before
|
* is covered by the infrastructure (eg. opening a transaction before
|
||||||
@@ -1074,7 +1074,7 @@ int main(int argc, char *argv[])
|
|||||||
* channel_announcement, channel_update, node_announcement and gossip
|
* channel_announcement, channel_update, node_announcement and gossip
|
||||||
* queries. It also hands us the latest channel_updates for our
|
* queries. It also hands us the latest channel_updates for our
|
||||||
* channels. */
|
* 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
|
/*~ Create RPC socket: now lightning-cli can send us JSON RPC commands
|
||||||
* over a UNIX domain socket specified by `ld->rpc_filename`. */
|
* over a UNIX domain socket specified by `ld->rpc_filename`. */
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ void channel_notify_new_block(struct lightningd *ld UNNEEDED,
|
|||||||
void connectd_activate(struct lightningd *ld UNNEEDED)
|
void connectd_activate(struct lightningd *ld UNNEEDED)
|
||||||
{ fprintf(stderr, "connectd_activate called!\n"); abort(); }
|
{ fprintf(stderr, "connectd_activate called!\n"); abort(); }
|
||||||
/* Generated stub for connectd_init */
|
/* 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(); }
|
{ fprintf(stderr, "connectd_init called!\n"); abort(); }
|
||||||
/* Generated stub for daemon_poll */
|
/* Generated stub for daemon_poll */
|
||||||
int daemon_poll(struct pollfd *fds UNNEEDED, nfds_t nfds UNNEEDED, int timeout UNNEEDED)
|
int daemon_poll(struct pollfd *fds UNNEEDED, nfds_t nfds UNNEEDED, int timeout UNNEEDED)
|
||||||
@@ -92,7 +92,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)
|
bool fromwire_status_version(const tal_t *ctx UNNEEDED, const void *p UNNEEDED, wirestring **version UNNEEDED)
|
||||||
{ fprintf(stderr, "fromwire_status_version called!\n"); abort(); }
|
{ fprintf(stderr, "fromwire_status_version called!\n"); abort(); }
|
||||||
/* Generated stub for gossip_init */
|
/* 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(); }
|
{ fprintf(stderr, "gossip_init called!\n"); abort(); }
|
||||||
/* Generated stub for gossip_notify_new_block */
|
/* Generated stub for gossip_notify_new_block */
|
||||||
void gossip_notify_new_block(struct lightningd *ld UNNEEDED, u32 blockheight UNNEEDED)
|
void gossip_notify_new_block(struct lightningd *ld UNNEEDED, u32 blockheight UNNEEDED)
|
||||||
|
|||||||
Reference in New Issue
Block a user