]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blobdiff - src/allmydata/util/rrefutil.py
introweb: fix connection hints for server announcements
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / util / rrefutil.py
index b991267f1ad1998e1f8994bd4f31b2a23807ee6d..6481cabc9e3a82f9d8cde7df0b494a7a8c3ca2ee 100644 (file)
@@ -27,16 +27,18 @@ def trap_deadref(f):
     return trap_and_discard(f, DeadReferenceError)
 
 
-def hosts_for_furl(furl, ignore_localhost=True):
-    advertised = []
-    for hint in SturdyRef(furl).locationHints:
-        assert not isinstance(hint, str), hint
-        if hint[0] == "ipv4":
-            host = hint[1]
-            if ignore_localhost and host == "127.0.0.1":
-                continue
-            advertised.append(host)
-    return advertised
+def connection_hints_for_furl(furl):
+    hints = []
+    for h in SturdyRef(furl).locationHints:
+        # Foolscap-0.2.5 and earlier used strings in .locationHints, 0.2.6
+        # through 0.6.4 used tuples of ("ipv4",host,port), 0.6.5 through
+        # 0.8.0 used tuples of ("tcp",host,port), and >=0.9.0 uses strings
+        # again. Tolerate them all.
+        if isinstance(h, tuple):
+            hints.append(":".join([str(s) for s in h]))
+        else:
+            hints.append(h)
+    return hints
 
 def stringify_remote_address(rref):
     remote = rref.getPeer()