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.
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;