diff --git a/src/common/socks5.py b/src/common/socks5.py
index f45593093d7deed0e81855d51afe2ccac6b2c504..55f5982e7fe2ec2390b4316d135ad4799f7076ef 100644
--- a/src/common/socks5.py
+++ b/src/common/socks5.py
@@ -805,6 +805,13 @@ class Socks5Listener(IdleObject):
 			self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
 			self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
 			self._serv.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
+			# Under windows Vista, we need that to listen on ipv6 AND ipv4
+			# Doesn't work under windows XP
+			if os.name == 'nt':
+				ver = os.sys.getwindowsversion()
+				if (ver[3], ver[0], ver[1]) == (2, 6, 0):
+					# 27 is socket.IPV6_V6ONLY under windows, but not defined ...
+					self._serv.setsockopt(socket.IPPROTO_IPV6, 27, 1)
 			# will fail when port as busy, or we don't have rights to bind
 			try:
 				self._serv.bind(ai[4])