Skip to content

Commit 72687cf

Browse files
riptlravyu-jump
authored andcommitted
gossip: support tpu vote quic
1 parent 3902f65 commit 72687cf

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

src/flamenco/gossip/fd_gossip.c

+18-5
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,7 @@ typedef struct {
317317
fd_gossip_peer_addr_t tpu;
318318
fd_gossip_peer_addr_t tpu_quic;
319319
fd_gossip_peer_addr_t tpu_vote;
320+
fd_gossip_peer_addr_t tpu_vote_quic;
320321
} fd_gossip_node_addrs_t;
321322

322323
/* Global data for gossip service */
@@ -662,8 +663,9 @@ fd_gossip_refresh_contact_info_v2_sockets( fd_gossip_node_addrs_t const * addrs,
662663
ushort serve_repair_port = fd_ushort_bswap( addrs->serve_repair.port );
663664
ushort tvu_port = fd_ushort_bswap( addrs->tvu.port );
664665
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 );
666667
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 );
667669

668670
/* Loop is bounded by number of if( xx_port > 0 ... ) statements + 1, so 7. */
669671
for(;;) {
@@ -702,6 +704,11 @@ fd_gossip_refresh_contact_info_v2_sockets( fd_gossip_node_addrs_t const * addrs,
702704
min_addr = &addrs->tpu_vote;
703705
min_port = tpu_vote_port;
704706
}
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+
}
705712
if( min_port==USHORT_MAX ) {
706713
break;
707714
}
@@ -735,10 +742,16 @@ fd_gossip_refresh_contact_info_v2_sockets( fd_gossip_node_addrs_t const * addrs,
735742
if( FD_UNLIKELY( min_key == FD_GOSSIP_SOCKET_TAG_TPU ) ){
736743
/* FIXME: This is a hack around the fact that TPU and TPU vote
737744
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++;
742755
}
743756
}
744757

src/flamenco/gossip/fd_gossip.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@
2424
#define FD_GOSSIP_SOCKET_TAG_TPU_VOTE (9)
2525
#define FD_GOSSIP_SOCKET_TAG_TVU (10)
2626
#define FD_GOSSIP_SOCKET_TAG_TVU_QUIC (11)
27+
#define FD_GOSSIP_SOCKET_TAG_TPU_VOTE_QUIC (12)
2728

28-
#define FD_GOSSIP_SOCKET_TAG_MAX (12)
29+
#define FD_GOSSIP_SOCKET_TAG_MAX (13)
2930

3031

3132
enum fd_gossip_crds_route {

0 commit comments

Comments
 (0)