aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-02-24 22:29:31 -0800
committerZac Medico <zmedico@gentoo.org>2011-02-24 22:29:31 -0800
commit4609f5da90f3d925255d68c2cacc1bda6814dfcf (patch)
tree98b63f5a323b210e854723147af0847419caff66
parentaction_sync: handle IPv6 [ip] in SYNC (diff)
downloadportage-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.py18
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(