@@ -317,6 +317,7 @@ typedef struct {
317
317
fd_gossip_peer_addr_t tpu ;
318
318
fd_gossip_peer_addr_t tpu_quic ;
319
319
fd_gossip_peer_addr_t tpu_vote ;
320
+ fd_gossip_peer_addr_t tpu_vote_quic ;
320
321
} fd_gossip_node_addrs_t ;
321
322
322
323
/* Global data for gossip service */
@@ -662,8 +663,9 @@ fd_gossip_refresh_contact_info_v2_sockets( fd_gossip_node_addrs_t const * addrs,
662
663
ushort serve_repair_port = fd_ushort_bswap ( addrs -> serve_repair .port );
663
664
ushort tvu_port = fd_ushort_bswap ( addrs -> tvu .port );
664
665
ushort tpu_port = fd_ushort_bswap ( addrs -> tpu .port );
665
- ushort tpu_quic_port = fd_ushort_bswap ( ( ushort )( addrs -> tpu_quic .port ) );
666
+ ushort tpu_quic_port = fd_ushort_bswap ( addrs -> tpu_quic .port );
666
667
ushort tpu_vote_port = fd_ushort_bswap ( addrs -> tpu_vote .port );
668
+ ushort tpu_vote_quic_port = fd_ushort_bswap ( addrs -> tpu_vote_quic .port );
667
669
668
670
/* Loop is bounded by number of if( xx_port > 0 ... ) statements + 1, so 7. */
669
671
for (;;) {
@@ -702,6 +704,11 @@ fd_gossip_refresh_contact_info_v2_sockets( fd_gossip_node_addrs_t const * addrs,
702
704
min_addr = & addrs -> tpu_vote ;
703
705
min_port = tpu_vote_port ;
704
706
}
707
+ if ( tpu_vote_quic_port > 0 && tpu_vote_quic_port > last_port && tpu_vote_quic_port < min_port ) {
708
+ min_key = FD_GOSSIP_SOCKET_TAG_TPU_VOTE_QUIC ;
709
+ min_addr = & addrs -> tpu_vote_quic ;
710
+ min_port = tpu_vote_quic_port ;
711
+ }
705
712
if ( min_port == USHORT_MAX ) {
706
713
break ;
707
714
}
@@ -735,10 +742,16 @@ fd_gossip_refresh_contact_info_v2_sockets( fd_gossip_node_addrs_t const * addrs,
735
742
if ( FD_UNLIKELY ( min_key == FD_GOSSIP_SOCKET_TAG_TPU ) ){
736
743
/* FIXME: This is a hack around the fact that TPU and TPU vote
737
744
share the same port. */
738
- info -> sockets [ sock_cnt ].index = min_addr_idx ;
739
- info -> sockets [ sock_cnt ].offset = 0U ;
740
- info -> sockets [ sock_cnt ].key = FD_GOSSIP_SOCKET_TAG_TPU_VOTE ;
741
- sock_cnt ++ ;
745
+ info -> sockets [ sock_cnt ].index = min_addr_idx ;
746
+ info -> sockets [ sock_cnt ].offset = 0U ;
747
+ info -> sockets [ sock_cnt ].key = FD_GOSSIP_SOCKET_TAG_TPU_VOTE ;
748
+ sock_cnt ++ ;
749
+ }
750
+ if ( FD_UNLIKELY ( min_key == FD_GOSSIP_SOCKET_TAG_TPU_QUIC ) ) {
751
+ info -> sockets [ sock_cnt ].index = min_addr_idx ;
752
+ info -> sockets [ sock_cnt ].offset = 0U ;
753
+ info -> sockets [ sock_cnt ].key = FD_GOSSIP_SOCKET_TAG_TPU_VOTE_QUIC ;
754
+ sock_cnt ++ ;
742
755
}
743
756
}
744
757
0 commit comments