diff options
author | Rob Austein <sra@hactrn.net> | 2013-06-12 20:13:26 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2013-06-12 20:13:26 +0000 |
commit | 68ab5bc3c0b93dbb7af24af8353b2859459dad61 (patch) | |
tree | 20863bbf144113a7977bfe72d69df7713e20f895 /rtr-origin | |
parent | 72075c4103ced3973eed75b74d012bc4046d8cde (diff) |
Cleanup client connect code.
svn path=/trunk/; revision=5398
Diffstat (limited to 'rtr-origin')
-rwxr-xr-x | rtr-origin/rtr-origin.py | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/rtr-origin/rtr-origin.py b/rtr-origin/rtr-origin.py index a1013528..20fa452e 100755 --- a/rtr-origin/rtr-origin.py +++ b/rtr-origin/rtr-origin.py @@ -1238,19 +1238,27 @@ class client_channel(pdu_channel): Set up TCP connection and start listening for first PDU. """ blather("[Starting raw TCP connection to %s:%s]" % (host, port)) - for ai in socket.getaddrinfo(host, port, socket.AF_UNSPEC, socket.SOCK_STREAM): - af, socktype, proto, cn, sa = ai - try: - s = socket.socket(af, socktype, proto) - except: - continue - try: - s.connect(sa) - except: - s.close() - continue - return cls(sock = s, proc = None, killsig = None) - sys.exit("Couldn't connect to host %s port %s" % (host, port)) + try: + addrinfo = socket.getaddrinfo(host, port, socket.AF_UNSPEC, socket.SOCK_STREAM) + except socket.error, e: + blather("[socket.getaddrinfo() failed: %s]" % e) + else: + for ai in addrinfo: + af, socktype, proto, cn, sa = ai + blather("[Trying addr %s port %s]" % sa[:2]) + try: + s = socket.socket(af, socktype, proto) + except socket.error, e: + blather("[socket.socket() failed: %s]" % e) + continue + try: + s.connect(sa) + except socket.error, e: + blather("[socket.connect() failed: %s]" % e) + s.close() + continue + return cls(sock = s, proc = None, killsig = None) + sys.exit(1) @classmethod def loopback(cls): |