function resolve_hostname()

in src/network/_Private/resolve_hostname.php [17:42]


function resolve_hostname(OS\AddressFamily $af, string $host): ?string {
  // FIXME: add OS\getaddrinfo, kill this function.
  switch ($af) {
    case OS\AddressFamily::AF_INET:
      // if it's already a valid IP, it just returns the input.
      return \gethostbyname($host);
    case OS\AddressFamily::AF_INET6:
      if (\filter_var($host, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6)) {
        return $host;
      }
      $authns = null;
      $addtl = null;
      return \dns_get_record(
        $host,
        \DNS_AAAA,
        inout $authns,
        inout $addtl,
      )['AAAA'] ??
        null;
    default:
      _OS\throw_errno(
        OS\Errno::EAFNOSUPPORT,
        "Can only resolve hostnames to IPv4 and IPv6 addresses",
      );
  }
}