--- emerge.old 2005-09-11 12:17:39.180905106 +0000 +++ emerge 2005-09-11 12:29:50.730905106 +0000 @@ -2505,8 +2505,24 @@ if ips: del ips[0] if ips==[]: + if portage.settings.has_key("RSYNC_IPV"): + if portage.settings["RSYNC_IPV"] == "4": + rsync_afi = socket.AF_INET + elif portage.settings["RSYNC_IPV"] == "6": + rsync_afi = socket.AF_INET6 + else: + print "!!! RSYNC_IPV specified, but it is not 4 or 6." + rsync_afi = socket.AF_UNSPEC + else: + rsync_afi = socket.AF_UNSPEC + try: - ips=socket.gethostbyname_ex(hostname)[2] + for addrinfo in socket.getaddrinfo(hostname, None, rsync_afi, socket.SOCK_STREAM): + if addrinfo[0] == 10: # IPv6 addresses need to be added with brackets + ips.append('[' + addrinfo[4][0] + ']') + else: + ips.append(addrinfo[4][0]) + except SystemExit, e: raise # Needed else can't exit except Exception, e: