diff --git a/pychromecast/socket_client.py b/pychromecast/socket_client.py index db14e0511..595a71076 100644 --- a/pychromecast/socket_client.py +++ b/pychromecast/socket_client.py @@ -352,7 +352,16 @@ def mdns_backoff( self.host, self.port, ) - self.socket.connect((self.host, self.port)) + + mapped_host = socket.getaddrinfo( + self.host, + self.port, + socket.AF_INET6, + socket.SOCK_STREAM, + flags=(socket.AI_ADDRCONFIG | socket.AI_V4MAPPED) + )[0][4] + + self.socket.connect(mapped_host) context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) context.check_hostname = False context.verify_mode = ssl.CERT_NONE @@ -1135,7 +1144,8 @@ def new_socket() -> socket.socket: Try to set SO_REUSEPORT for BSD-flavored systems if it's an option. Catches errors if not. """ - new_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + new_sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) + new_sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0) new_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: