diff --git a/gossipd/routing.c b/gossipd/routing.c index 6b6a98631..b22689fb8 100644 --- a/gossipd/routing.c +++ b/gossipd/routing.c @@ -206,11 +206,10 @@ static struct node_connection * get_connection(struct routing_state *rstate, } struct node_connection *get_connection_by_scid(const struct routing_state *rstate, - const struct short_channel_id *schanid, + const struct short_channel_id *scid, const u8 direction) { - u64 scid = short_channel_id_to_uint(schanid); - struct routing_channel *chan = uintmap_get(&rstate->channels, scid); + struct routing_channel *chan = get_channel(rstate, scid); if (chan == NULL) return NULL; @@ -598,8 +597,7 @@ struct routing_channel *routing_channel_new(const tal_t *ctx, static void destroy_node_connection(struct node_connection *nc, struct routing_state *rstate) { - struct routing_channel *chan = uintmap_get( - &rstate->channels, short_channel_id_to_uint(&nc->short_channel_id)); + struct routing_channel *chan = get_channel(rstate,&nc->short_channel_id); struct node_connection *c = chan->connections[nc->flags & 0x1]; if (c == NULL) return; @@ -683,7 +681,7 @@ const struct short_channel_id *handle_channel_announcement( /* Check if we know the channel already (no matter in what * state, we stop here if yes). */ - chan = uintmap_get(&rstate->channels, scid); + chan = get_channel(rstate, &pending->short_channel_id); if (chan != NULL && chan->public) { return tal_free(pending); } @@ -765,10 +763,9 @@ bool handle_pending_cannouncement(struct routing_state *rstate, const u8 *s; struct pending_cannouncement *pending; struct routing_channel *chan; - u64 uscid = short_channel_id_to_uint(scid); /* There may be paths which can clean this up, eg. error processing. */ - chan = uintmap_get(&rstate->channels, uscid); + chan = get_channel(rstate, scid); if (!chan) return false; @@ -918,8 +915,7 @@ void handle_channel_update(struct routing_state *rstate, const u8 *update) return; } - chan = uintmap_get(&rstate->channels, - short_channel_id_to_uint(&short_channel_id)); + chan = get_channel(rstate, &short_channel_id); if (!chan) { SUPERVERBOSE("Ignoring update for unknown channel %s", type_to_string(trc, struct short_channel_id, @@ -1331,9 +1327,7 @@ void mark_channel_unroutable(struct routing_state *rstate, status_trace("Received mark_channel_unroutable channel %s", scid); - chan = uintmap_get(&rstate->channels, - short_channel_id_to_uint(channel)); - + chan = get_channel(rstate, channel); if (!chan) { status_unusual("mark_channel_unroutable: " "channel %s not in routemap", diff --git a/gossipd/routing.h b/gossipd/routing.h index 50e5d17e6..3081d38e6 100644 --- a/gossipd/routing.h +++ b/gossipd/routing.h @@ -124,6 +124,13 @@ struct routing_state { UINTMAP(struct routing_channel*) channels; }; +static inline struct routing_channel * +get_channel(const struct routing_state *rstate, + const struct short_channel_id *scid) +{ + return uintmap_get(&rstate->channels, short_channel_id_to_uint(scid)); +} + struct route_hop { struct short_channel_id channel_id; struct pubkey nodeid;