LCOV - code coverage report
Current view: top level - disco/shred - fd_shred_dest_resolver.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 24 0.0 %
Date: 2026-10-22 18:10:43 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #include "fd_shred_dest_resolver.h"
       2             : 
       3             : #include "../../util/net/fd_ip4.h"
       4             : 
       5             : #include <string.h>
       6             : 
       7             : void
       8             : fd_shred_resolve_additional_destinations( char const                  endpoints[][ FD_HOSTPORT_BUF_MAX ],
       9             :                                           ulong                       endpoint_cnt,
      10             :                                           char const *                config_key,
      11           0 :                                           fd_shred_dest_weighted_t * out ) {
      12           0 :   FD_TEST( endpoint_cnt<=FD_DNS_RESOLVE_PEERS_MAX );
      13             : 
      14           0 :   char  dns_peers[ FD_DNS_RESOLVE_PEERS_MAX ][ FD_HOSTPORT_BUF_MAX ];
      15           0 :   uchar dns_idx  [ FD_DNS_RESOLVE_PEERS_MAX ];
      16           0 :   ulong dns_cnt = 0UL;
      17           0 :   for( ulong i=0UL; i<endpoint_cnt; i++ ) {
      18           0 :     char const * endpoint = endpoints[ i ];
      19           0 :     char const * colon    = strchr( endpoint, ':' );
      20           0 :     if( FD_UNLIKELY( !colon || colon[ 1UL+strspn( colon+1, "0123456789" ) ] ) ) {
      21           0 :       FD_LOG_ERR(( "invalid [%s] entry \"%s\": expected host:port", config_key, endpoint ));
      22           0 :     }
      23             : 
      24           0 :     char hostname[ FD_FQDN_BUF_MAX ];
      25           0 :     fd_dns_peer_parse( endpoint, config_key, hostname, &out[ i ].port, NULL );
      26           0 :     out[ i ].port = fd_ushort_bswap( out[ i ].port );
      27           0 :     if( FD_LIKELY( (ulong)(colon-endpoint)<=15UL && fd_cstr_to_ip4_addr( hostname, &out[ i ].ip4 ) ) ) continue;
      28             : 
      29           0 :     fd_memcpy( dns_peers[ dns_cnt ], endpoint, sizeof(dns_peers[ dns_cnt ]) );
      30           0 :     dns_idx[ dns_cnt ] = (uchar)i;
      31           0 :     dns_cnt++;
      32           0 :   }
      33             : 
      34           0 :   if( !dns_cnt ) return;
      35             : 
      36           0 :   fd_ip4_port_t resolved[ FD_DNS_RESOLVE_PEERS_MAX ];
      37           0 :   fd_dns_resolve_peers( dns_peers[ 0 ], sizeof(dns_peers[ 0 ]), dns_cnt, config_key, resolved );
      38           0 :   for( ulong i=0UL; i<dns_cnt; i++ ) out[ dns_idx[ i ] ].ip4 = resolved[ i ].addr;
      39           0 : }

Generated by: LCOV version 1.14