
commit 853a4fddff28710b893e08f6f807fac25b4efb42 Author: David Fifield <david@bamsoftware.com> Date: Sat Jul 28 09:15:47 2012 -0700 Allow format_addr to have a None host or port. --- fac.py | 31 +++++++++++++++++++------------ 1 files changed, 19 insertions(+), 12 deletions(-) diff --git a/fac.py b/fac.py index ab8157c..8cf030d 100644 --- a/fac.py +++ b/fac.py @@ -38,18 +38,25 @@ def parse_addr_spec(spec, defhost = None, defport = None): def format_addr(addr): host, port = addr - if not host: - return u":%d" % port - # Numeric IPv6 address? - try: - addrs = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST) - af = addrs[0][0] - except socket.gaierror, e: - af = 0 - if af == socket.AF_INET6: - return u"[%s]:%d" % (host, port) - else: - return u"%s:%d" % (host, port) + host_str = u"" + port_str = u"" + if host is not None: + # Numeric IPv6 address? + try: + addrs = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST) + af = addrs[0][0] + except socket.gaierror, e: + af = 0 + if af == socket.AF_INET6: + host_str = u"[%s]" % host + else: + host_str = u"%s" % host + if port is not None: + port_str = u":%d" % port + + if not host_str and not port_str: + raise ValueError("host and port may not both be None") + return u"%s%s" % (host_str, port_str) def skip_space(pos, line): """Skip a (possibly empty) sequence of space characters (the ASCII character