diff --git a/gear/__init__.py b/gear/__init__.py index 57d80e3..8c13c45 100644 --- a/gear/__init__.py +++ b/gear/__init__.py @@ -2760,9 +2760,14 @@ class Server(BaseClientServer): if all([self.ssl_key, self.ssl_cert, self.ssl_ca]): self.use_ssl = True - for res in socket.getaddrinfo(host, self.port, socket.AF_UNSPEC, - socket.SOCK_STREAM, 0, - socket.AI_PASSIVE): + # Get all valid passive listen addresses, then sort by family to prefer + # ipv6 if available. + addrs = socket.getaddrinfo(host, self.port, socket.AF_UNSPEC, + socket.SOCK_STREAM, 0, + socket.AI_PASSIVE | + socket.AI_ADDRCONFIG) + addrs.sort(key=lambda addr: addr[0], reverse=True) + for res in addrs: af, socktype, proto, canonname, sa = res try: self.socket = socket.socket(af, socktype, proto)