From 5624afc34011ad4d5fedf9834e82c8d9d2c70525 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 9 Aug 2018 09:55:29 +0930 Subject: [PATCH] connectd: clean up unused structure fields. They can be local variables. Signed-off-by: Rusty Russell --- connectd/connect.c | 110 ++++++++++++++++++++++++--------------------- 1 file changed, 58 insertions(+), 52 deletions(-) diff --git a/connectd/connect.c b/connectd/connect.c index 53af2b438..a5e730313 100644 --- a/connectd/connect.c +++ b/connectd/connect.c @@ -156,13 +156,6 @@ struct daemon { /* Local and global features to offer to peers. */ u8 *localfeatures, *globalfeatures; - /* Addresses master told us to use */ - struct wireaddr_internal *proposed_wireaddr; - enum addr_listen_announce *proposed_listen_announce; - - /* What we actually announce. */ - struct wireaddr *announcable; - /* Automatically reconnect. */ bool reconnect; @@ -171,7 +164,6 @@ struct daemon { struct addrinfo *proxyaddr; bool use_proxy_always; - char *tor_password; /* @see lightningd.config.use_dns */ bool use_dns; @@ -753,11 +745,12 @@ static bool public_address(struct daemon *daemon, struct wireaddr *wireaddr) return address_routable(wireaddr, daemon->dev_allow_localhost); } -static void add_announcable(struct daemon *daemon, const struct wireaddr *addr) +static void add_announcable(struct wireaddr **announcable, + const struct wireaddr *addr) { - size_t n = tal_count(daemon->announcable); - tal_resize(&daemon->announcable, n+1); - daemon->announcable[n] = *addr; + size_t n = tal_count(*announcable); + tal_resize(announcable, n+1); + (*announcable)[n] = *addr; } static void add_binding(struct wireaddr_internal **binding, @@ -774,9 +767,9 @@ static int wireaddr_cmp_type(const struct wireaddr *a, return (int)a->type - (int)b->type; } -static void finalize_announcable(struct daemon *daemon) +static void finalize_announcable(struct wireaddr **announcable) { - size_t n = tal_count(daemon->announcable); + size_t n = tal_count(*announcable); /* BOLT #7: * @@ -787,59 +780,62 @@ static void finalize_announcable(struct daemon *daemon) * - MUST NOT include more than one `address descriptor` of the same * type. */ - asort(daemon->announcable, n, wireaddr_cmp_type, NULL); + asort(*announcable, n, wireaddr_cmp_type, NULL); for (size_t i = 1; i < n; i++) { /* Note we use > instead of !=: catches asort bugs too. */ - if (daemon->announcable[i].type > daemon->announcable[i-1].type) + if ((*announcable)[i].type > (*announcable)[i-1].type) continue; status_unusual("WARNING: Cannot announce address %s," " already announcing %s", type_to_string(tmpctx, struct wireaddr, - &daemon->announcable[i]), + &(*announcable)[i]), type_to_string(tmpctx, struct wireaddr, - &daemon->announcable[i-1])); - memmove(daemon->announcable + i, - daemon->announcable + i + 1, - (n - i - 1) * sizeof(daemon->announcable[0])); - tal_resize(&daemon->announcable, --n); + &(*announcable)[i-1])); + memmove(*announcable + i, + *announcable + i + 1, + (n - i - 1) * sizeof((*announcable)[0])); + tal_resize(announcable, --n); --i; } } /* Initializes daemon->announcable array, returns addresses we bound to. */ static struct wireaddr_internal *setup_listeners(const tal_t *ctx, - struct daemon *daemon) + struct daemon *daemon, + const struct wireaddr_internal *proposed_wireaddr, + const enum addr_listen_announce *proposed_listen_announce, + const char *tor_password, + struct wireaddr **announcable) { struct sockaddr_un addrun; int fd; struct wireaddr_internal *binding; binding = tal_arr(ctx, struct wireaddr_internal, 0); - daemon->announcable = tal_arr(daemon, struct wireaddr, 0); + *announcable = tal_arr(ctx, struct wireaddr, 0); /* Add addresses we've explicitly been told to *first*: implicit * addresses will be discarded then if we have multiple. */ - for (size_t i = 0; i < tal_count(daemon->proposed_wireaddr); i++) { - struct wireaddr_internal wa = daemon->proposed_wireaddr[i]; + for (size_t i = 0; i < tal_count(proposed_wireaddr); i++) { + struct wireaddr_internal wa = proposed_wireaddr[i]; - if (daemon->proposed_listen_announce[i] & ADDR_LISTEN) + if (proposed_listen_announce[i] & ADDR_LISTEN) continue; - assert(daemon->proposed_listen_announce[i] & ADDR_ANNOUNCE); + assert(proposed_listen_announce[i] & ADDR_ANNOUNCE); /* You can only announce wiretypes! */ - assert(daemon->proposed_wireaddr[i].itype + assert(proposed_wireaddr[i].itype == ADDR_INTERNAL_WIREADDR); - add_announcable(daemon, &wa.u.wireaddr); + add_announcable(announcable, &wa.u.wireaddr); } /* Now look for listening addresses. */ - for (size_t i = 0; i < tal_count(daemon->proposed_wireaddr); i++) { - struct wireaddr_internal wa = daemon->proposed_wireaddr[i]; - bool announce = (daemon->proposed_listen_announce[i] - & ADDR_ANNOUNCE); + for (size_t i = 0; i < tal_count(proposed_wireaddr); i++) { + struct wireaddr_internal wa = proposed_wireaddr[i]; + bool announce = (proposed_listen_announce[i] & ADDR_ANNOUNCE); - if (!(daemon->proposed_listen_announce[i] & ADDR_LISTEN)) + if (!(proposed_listen_announce[i] & ADDR_LISTEN)) continue; switch (wa.itype) { @@ -877,7 +873,8 @@ static struct wireaddr_internal *setup_listeners(const tal_t *ctx, add_binding(&binding, &wa); if (announce && public_address(daemon, &wa.u.wireaddr)) - add_announcable(daemon, &wa.u.wireaddr); + add_announcable(announcable, + &wa.u.wireaddr); } /* Now, create wildcard IPv4 address. */ @@ -891,7 +888,8 @@ static struct wireaddr_internal *setup_listeners(const tal_t *ctx, add_binding(&binding, &wa); if (announce && public_address(daemon, &wa.u.wireaddr)) - add_announcable(daemon, &wa.u.wireaddr); + add_announcable(announcable, + &wa.u.wireaddr); } continue; } @@ -899,7 +897,7 @@ static struct wireaddr_internal *setup_listeners(const tal_t *ctx, handle_wireaddr_listen(daemon, &wa.u.wireaddr, false); add_binding(&binding, &wa); if (announce && public_address(daemon, &wa.u.wireaddr)) - add_announcable(daemon, &wa.u.wireaddr); + add_announcable(announcable, &wa.u.wireaddr); continue; case ADDR_INTERNAL_FORPROXY: break; @@ -907,28 +905,28 @@ static struct wireaddr_internal *setup_listeners(const tal_t *ctx, /* Shouldn't happen. */ status_failed(STATUS_FAIL_INTERNAL_ERROR, "Invalid listener address type %u", - daemon->proposed_wireaddr[i].itype); + proposed_wireaddr[i].itype); } /* Now we have bindings, set up any Tor auto addresses */ - for (size_t i = 0; i < tal_count(daemon->proposed_wireaddr); i++) { - if (!(daemon->proposed_listen_announce[i] & ADDR_LISTEN)) + for (size_t i = 0; i < tal_count(proposed_wireaddr); i++) { + if (!(proposed_listen_announce[i] & ADDR_LISTEN)) continue; - if (!(daemon->proposed_listen_announce[i] & ADDR_ANNOUNCE)) + if (!(proposed_listen_announce[i] & ADDR_ANNOUNCE)) continue; - if (daemon->proposed_wireaddr[i].itype != ADDR_INTERNAL_AUTOTOR) + if (proposed_wireaddr[i].itype != ADDR_INTERNAL_AUTOTOR) continue; - add_announcable(daemon, + add_announcable(announcable, tor_autoservice(tmpctx, - &daemon->proposed_wireaddr[i].u.torservice, - daemon->tor_password, + &proposed_wireaddr[i].u.torservice, + tor_password, binding)); } - finalize_announcable(daemon); + finalize_announcable(announcable); return binding; } @@ -943,15 +941,19 @@ static struct io_plan *connect_init(struct daemon_conn *master, { struct wireaddr *proxyaddr; struct wireaddr_internal *binding; + struct wireaddr_internal *proposed_wireaddr; + enum addr_listen_announce *proposed_listen_announce; + struct wireaddr *announcable; + char *tor_password; if (!fromwire_connectctl_init( daemon, msg, &daemon->id, &daemon->globalfeatures, - &daemon->localfeatures, &daemon->proposed_wireaddr, - &daemon->proposed_listen_announce, &daemon->reconnect, + &daemon->localfeatures, &proposed_wireaddr, + &proposed_listen_announce, &daemon->reconnect, &proxyaddr, &daemon->use_proxy_always, &daemon->dev_allow_localhost, &daemon->use_dns, - &daemon->tor_password)) { + &tor_password)) { master_badmsg(WIRE_CONNECTCTL_INIT, msg); } @@ -968,12 +970,16 @@ static struct io_plan *connect_init(struct daemon_conn *master, "dummy replies"); } - binding = setup_listeners(tmpctx, daemon); + binding = setup_listeners(tmpctx, daemon, + proposed_wireaddr, + proposed_listen_announce, + tor_password, + &announcable); daemon_conn_send(&daemon->master, take(towire_connectctl_init_reply(NULL, binding, - daemon->announcable))); + announcable))); return daemon_conn_read_next(master->conn, master); }