diff -ru portage-2.1.1_pre20060710/bin/emerge portage-2.1.1_pre20060710-ipv6/bin/emerge --- portage-2.1.1_pre20060710/bin/emerge 2006-07-11 01:01:38.000000000 +0200 +++ portage-2.1.1_pre20060710-ipv6/bin/emerge 2006-07-12 01:58:43.000000000 +0200 @@ -2657,8 +2657,24 @@ if ips: del ips[0] if ips==[]: + if settings.has_key("RSYNC_IPV"): + if settings["RSYNC_IPV"] == "4": + rsync_afi = socket.AF_INET + elif 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] == socket.AF_INET6: # 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: