return NULL;
}
-/**
- * Try to convert IP addresses directly
- */
-static host_t *try_numeric_lookup(char *name, int family)
-{
- struct addrinfo hints, *result;
- int error;
- host_t *host;
-
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = family;
- hints.ai_socktype = SOCK_DGRAM;
- hints.ai_flags = AI_NUMERICHOST;
-
- error = getaddrinfo(name, NULL, &hints, &result);
- if (error != 0)
- { /* not an IP address */
- return NULL;
- }
- else
- { /* result is a linked list, but we use only the first address */
- host = host_create_from_sockaddr(result->ai_addr);
- freeaddrinfo(result);
- }
- return host;
-}
-
METHOD(host_resolver_t, resolve, host_t*,
private_host_resolver_t *this, char *name, int family)
{
{ /* do not try to convert v6 addresses for v4 family */
return NULL;
}
- result = try_numeric_lookup(name, family);
- if (result)
- { /* shortcut for numeric IP addresses */
- return result;
- }
this->mutex->lock(this->mutex);
if (this->disabled)
{