aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVolker RĂ¼melin <vr_strongswan@t-online.de>2013-04-21 15:10:39 +0200
committerMartin Willi <martin@revosec.ch>2013-05-16 11:03:37 +0200
commitf8298b9f986784a0d4c92c5c4dc5179a0b1d826c (patch)
treeff9b9f56957f6024ee782a05d69569653350cb60 /src
parent21bade294bbd31aafc64f485f40afe2c5b6d87c2 (diff)
downloadstrongswan-f8298b9f986784a0d4c92c5c4dc5179a0b1d826c.tar.bz2
strongswan-f8298b9f986784a0d4c92c5c4dc5179a0b1d826c.tar.xz
host-resolver: don't try to resolve a plain v4 address to an IPv6 address
Suppress 'Address family for hostname not supported' errors if a IPv6 client connects in a mixed IPv4/IPv6 environment.
Diffstat (limited to 'src')
-rw-r--r--src/libstrongswan/networking/host_resolver.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/libstrongswan/networking/host_resolver.c b/src/libstrongswan/networking/host_resolver.c
index 5e244f114..99a17d17c 100644
--- a/src/libstrongswan/networking/host_resolver.c
+++ b/src/libstrongswan/networking/host_resolver.c
@@ -233,10 +233,24 @@ METHOD(host_resolver_t, resolve, host_t*,
.family = family,
};
host_t *result;
+ struct in_addr addr;
- if (family == AF_INET && strchr(name, ':'))
- { /* do not try to convert v6 addresses for v4 family */
- return NULL;
+ switch (family)
+ {
+ case AF_INET:
+ /* do not try to convert v6 addresses for v4 family */
+ if (strchr(name, ':'))
+ {
+ return NULL;
+ }
+ break;
+ case AF_INET6:
+ /* do not try to convert v4 addresses for v6 family */
+ if (inet_pton(AF_INET, name, &addr) == 1)
+ {
+ return NULL;
+ }
+ break;
}
this->mutex->lock(this->mutex);
if (this->disabled)