diff -r 0238cc842805 Lib/ftplib.py --- a/Lib/ftplib.py Thu Dec 06 17:49:58 2012 -0500 +++ b/Lib/ftplib.py Sat Dec 08 20:56:35 2012 +0200 @@ -288,21 +288,25 @@ def makeport(self): '''Create a new socket and send a PORT command for it.''' - msg = "getaddrinfo returns an empty list" sock = None + saved_err = None for res in socket.getaddrinfo(None, 0, self.af, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): af, socktype, proto, canonname, sa = res try: sock = socket.socket(af, socktype, proto) sock.bind(sa) - except socket.error as msg: + except OSError as err: + saved_err = err if sock: sock.close() sock = None continue break if not sock: - raise socket.error(msg) + if saved_err is not None: + raise saved_err from None + else: + raise OSError("getaddrinfo returns an empty list") sock.listen(1) port = sock.getsockname()[1] # Get proper port host = self.sock.getsockname()[0] # Get proper host