--- cvsnt-2.5.04.3236/./cvsapi/unix/SocketIO.cpp.org 2008-11-10 00:11:59.817179663 +0100 +++ cvsnt-2.5.04.3236/./cvsapi/unix/SocketIO.cpp 2008-11-10 00:13:32.297166956 +0100 @@ -182,6 +182,15 @@ sock = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol); if( -1 == sock) { CServerIo::trace(3,"Socket creation failed: %s",gai_strerror(errno)); + } else { +#ifdef IPV6_V6ONLY + /* Only communicate in IPv6 over AF_INET6 sockets. */ + if (addr->ai_family == AF_INET6) { + int on = 1; + if (::setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) == -1) + CServerIo::trace(3, "setsockopt IPV6_V6ONLY: %s", strerror(errno)); + } +#endif } m_sockets.push_back(sock); // even push (-1) to keep order of m_sockets and m_pAddrInfo }