diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-02-24 22:29:31 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-02-24 22:29:31 -0800 |
commit | 4609f5da90f3d925255d68c2cacc1bda6814dfcf (patch) | |
tree | 98b63f5a323b210e854723147af0847419caff66 | |
parent | 0f065ee055741fe219187df3ad5fb58055a53902 (diff) | |
download | portage-4609f5da90f3d925255d68c2cacc1bda6814dfcf.tar.gz portage-4609f5da90f3d925255d68c2cacc1bda6814dfcf.tar.bz2 portage-4609f5da90f3d925255d68c2cacc1bda6814dfcf.zip |
action_sync: handle IPv6 [ip] in SYNC some more
This will fix bug #356375 some more.
-rw-r--r-- | pym/_emerge/actions.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py index 1b3b18157..20220fc57 100644 --- a/pym/_emerge/actions.py +++ b/pym/_emerge/actions.py @@ -2088,13 +2088,23 @@ def action_sync(settings, trees, mtimedb, myopts, myaction): maxretries = -1 #default number of retries retries=0 - proto, user_name, hostname, port = re.split( - r"(rsync|ssh)://([^:/]+@)?(\[[:\da-fA-F]*\]|[^:/]*)(:[0-9]+)?", - syncuri, maxsplit=4)[1:5] + try: + proto, user_name, hostname, port = re.split( + r"(rsync|ssh)://([^:/]+@)?(\[[:\da-fA-F]*\]|[^:/]*)(:[0-9]+)?", + syncuri, maxsplit=4)[1:5] + except ValueError: + writemsg_level("!!! SYNC is invalid: %s\n" % syncuri, + noiselevel=-1, level=logging.ERROR) + return 1 if port is None: port="" if user_name is None: user_name="" + if re.match(r"^\[[:\da-fA-F]*\]$", hostname) is None: + getaddrinfo_host = hostname + else: + # getaddrinfo needs the brackets stripped + getaddrinfo_host = hostname[1:-1] updatecache_flg=True all_rsync_opts = set(rsync_opts) extra_rsync_opts = portage.util.shlex_split( @@ -2113,7 +2123,7 @@ def action_sync(settings, trees, mtimedb, myopts, myaction): try: addrinfos = getaddrinfo_validate( - socket.getaddrinfo(hostname, None, + socket.getaddrinfo(getaddrinfo_host, None, family, socket.SOCK_STREAM)) except socket.error as e: writemsg_level( |