From 201aac4ac841f0845b5525e7729559a91eba56fb Mon Sep 17 00:00:00 2001 From: Gibheer Date: Fri, 9 Jun 2017 09:48:55 +0200 Subject: [PATCH] allow listening on IPv6 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 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pdns/dynlistener.cc b/pdns/dynlistener.cc index 871df8d2fd..8de1c191e9 100644 --- a/pdns/dynlistener.cc +++ b/pdns/dynlistener.cc @@ -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; -- 2.47.2