]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
allow listening on IPv6 5387/head
authorGibheer <gibheer+git@zero-knowledge.org>
Fri, 9 Jun 2017 07:48:55 +0000 (09:48 +0200)
committerGibheer <gibheer+git@zero-knowledge.org>
Fri, 9 Jun 2017 07:48:55 +0000 (09:48 +0200)
In IPv6 only environments it is not possible to listen on IPv6 addresses
for the control port.
This change takes a look at the provided IP and changes the connection type
to the correct address family.

pdns/dynlistener.cc

index 871df8d2fdef1eadd4d0ebef72f6271cdab708e8..8de1c191e9806da29433c2d5d8e729ad35fae663 100644 (file)
@@ -146,7 +146,11 @@ void DynListener::listenOnUnixDomain(const string& fname)
 
 void DynListener::listenOnTCP(const ComboAddress& local)
 {
-  createSocketAndBind(AF_INET, (struct sockaddr*)& local, local.getSocklen());
+  if (local.isIPv4()) {
+    createSocketAndBind(AF_INET, (struct sockaddr*)& local, local.getSocklen());
+  } else if (local.isIPv6()) {
+    createSocketAndBind(AF_INET6, (struct sockaddr*)& local, local.getSocklen());
+  }
   listen(d_s, 10);
 
   d_socketaddress=local;