Add windows workaround for IPv6 sockets to also listen on IPv4

This commit is contained in:
Arnaud Barisain-Monrose 2014-01-19 23:05:00 +01:00
parent 81825dfa0d
commit fe3c27cf18

View File

@ -43,7 +43,12 @@ def create_socket():
if has_ipv6:
sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
# Explicitly configure socket to work for both IPv4 and IPv6
sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
if (hasattr(socket, 'IPPROTO_IPV6')):
sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
else:
# Python 2.7 on windows does not have the IPPROTO_IPV6 constant
# Use values extracted from Windows Vista/7/8's header
sock.setsockopt(41, 27, 0)
else:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)