pikvm/pikvm#521: fixed ipv4-only binding for vnc

This commit is contained in:
Maxim Devaev 2021-10-28 01:10:54 +03:00
parent ea896f7116
commit 88aad3bf87

View File

@ -500,10 +500,12 @@ class VncServer: # pylint: disable=too-many-instance-attributes
logger.info("Listening VNC on TCP [%s]:%d ...", self.__host, self.__port) logger.info("Listening VNC on TCP [%s]:%d ...", self.__host, self.__port)
with contextlib.closing(socket.socket(socket.AF_INET6, socket.SOCK_STREAM)) as sock: (family, _, _, _, addr) = socket.getaddrinfo(self.__host, self.__port, type=socket.SOCK_STREAM)[0]
with contextlib.closing(socket.socket(family, socket.SOCK_STREAM)) as sock:
if family == socket.AF_INET6:
sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0) sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((self.__host, self.__port)) sock.bind(addr)
server = loop.run_until_complete(asyncio.start_server( server = loop.run_until_complete(asyncio.start_server(
client_connected_cb=self.__handle_client, client_connected_cb=self.__handle_client,