From 3576b3006c2737fa24b459992f6bb156e06791fc Mon Sep 17 00:00:00 2001 From: clowwindy Date: Thu, 6 Aug 2015 15:13:29 +0800 Subject: [PATCH] support IPv6 on control socket --- shadowsocks/manager.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/shadowsocks/manager.py b/shadowsocks/manager.py index 75ecc08dd..8639fdaf9 100644 --- a/shadowsocks/manager.py +++ b/shadowsocks/manager.py @@ -46,13 +46,17 @@ def __init__(self, config): try: manager_address = config['manager_address'] if ':' in manager_address: - addr = manager_address.split(':') + addr = manager_address.rsplit(':', 1) addr = addr[0], int(addr[1]) - family = socket.AF_INET + addrs = socket.getaddrinfo(addr[0], addr[1]) + if addrs: + family = addrs[0][0] + else: + logging.error('invalid address: %s', manager_address) + exit(1) else: addr = manager_address family = socket.AF_UNIX - # TODO use address instead of port self._control_socket = socket.socket(family, socket.SOCK_DGRAM) self._control_socket.bind(addr)