@@ -83,7 +83,7 @@ struct seeker {
8383 bool unknown_nodes ;
8484
8585 /* Peers we've asked to stream us gossip (set to NULL if peer dies) */
86- struct peer * gossiper [ 10 ] ;
86+ struct peer * * gossiper ;
8787
8888 /* A peer that told us about unknown gossip (set to NULL if peer dies). */
8989 struct peer * preferred_peer ;
@@ -150,8 +150,7 @@ struct seeker *new_seeker(struct daemon *daemon)
150150 uintmap_init (& seeker -> unknown_scids );
151151 uintmap_init (& seeker -> stale_scids );
152152 seeker -> random_peer = NULL ;
153- for (size_t i = 0 ; i < ARRAY_SIZE (seeker -> gossiper ); i ++ )
154- seeker -> gossiper [i ] = NULL ;
153+ seeker -> gossiper = tal_arrz (seeker , struct peer * , 10 );
155154 seeker -> preferred_peer = NULL ;
156155 seeker -> unknown_nodes = false;
157156 seeker -> last_full_sync_peer = NULL ;
@@ -269,7 +268,7 @@ static void normal_gossip_start(struct seeker *seeker, struct peer *peer, bool a
269268 return ;
270269
271270 /* Make this one of our streaming gossipers if we aren't full */
272- for (size_t i = 0 ; i < ARRAY_SIZE (seeker -> gossiper ); i ++ ) {
271+ for (size_t i = 0 ; i < tal_count (seeker -> gossiper ); i ++ ) {
273272 if (seeker -> gossiper [i ] == NULL ) {
274273 seeker -> gossiper [i ] = peer ;
275274 enable_stream = true;
@@ -887,7 +886,7 @@ static bool peer_is_not_gossipper(const struct peer *peer)
887886 if (!peer -> gossip_queries_feature )
888887 return false;
889888
890- for (size_t i = 0 ; i < ARRAY_SIZE (seeker -> gossiper ); i ++ ) {
889+ for (size_t i = 0 ; i < tal_count (seeker -> gossiper ); i ++ ) {
891890 if (seeker -> gossiper [i ] == peer )
892891 return false;
893892 }
@@ -898,7 +897,7 @@ static bool peer_is_not_gossipper(const struct peer *peer)
898897static void reset_gossip_performance_metrics (struct seeker * seeker )
899898{
900899 seeker -> new_gossiper_elapsed = 0 ;
901- for (int i = 0 ; i < ARRAY_SIZE (seeker -> gossiper ); i ++ ) {
900+ for (int i = 0 ; i < tal_count (seeker -> gossiper ); i ++ ) {
902901 seeker -> gossiper [i ]-> gossip_counter = 0 ;
903902 }
904903}
@@ -916,7 +915,7 @@ static void maybe_rotate_gossipers(struct seeker *seeker)
916915 return ;
917916
918917 /* If we have a slot free, fill it. */
919- for (i = 0 ; i < ARRAY_SIZE (seeker -> gossiper ); i ++ ) {
918+ for (i = 0 ; i < tal_count (seeker -> gossiper ); i ++ ) {
920919 if (!seeker -> gossiper [i ]) {
921920 status_peer_debug (& peer -> id , "seeker: filling slot %zu" ,
922921 i );
@@ -932,9 +931,10 @@ static void maybe_rotate_gossipers(struct seeker *seeker)
932931 if (seeker -> new_gossiper_elapsed < 5 )
933932 return ;
934933 u32 lowest_count = UINT_MAX ;
935- for (int j = 0 ; j < ARRAY_SIZE (seeker -> gossiper ); j ++ ) {
936- if (seeker -> gossiper [j ]-> gossip_counter < lowest_count ) {
937- lowest_count = seeker -> gossiper [j ]-> gossip_counter ;
934+ lowest_idx = 0 ;
935+ for (int j = 0 ; j < tal_count (seeker -> gossiper ); j ++ ) {
936+ if (seeker -> gossiper [j ]-> gossip_counter < lowest_count ) {
937+ lowest_count = seeker -> gossiper [j ]-> gossip_counter ;
938938 lowest_idx = j ;
939939 }
940940 }
@@ -1112,7 +1112,7 @@ void seeker_peer_gone(struct seeker *seeker, const struct peer *peer)
11121112 if (seeker -> random_peer == peer )
11131113 seeker -> random_peer = NULL ;
11141114
1115- for (size_t i = 0 ; i < ARRAY_SIZE (seeker -> gossiper ); i ++ ) {
1115+ for (size_t i = 0 ; i < tal_count (seeker -> gossiper ); i ++ ) {
11161116 if (seeker -> gossiper [i ] == peer )
11171117 seeker -> gossiper [i ] = NULL ;
11181118 }
0 commit comments