diff -r a9d43e21f7d8 Lib/logging/handlers.py --- a/Lib/logging/handlers.py Sat May 19 08:12:00 2012 +0800 +++ b/Lib/logging/handlers.py Sat May 19 12:28:09 2012 +0400 @@ -462,10 +462,13 @@ A factory method which allows subclasses to define the precise type of socket they want. """ - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.address_family, _, _, _, self.address = socket.getaddrinfo( + self.host, self.port, socket.AF_UNSPEC, socket.SOCK_STREAM + )[0] + s = socket.socket(self.address_family, socket.SOCK_STREAM) if hasattr(s, 'settimeout'): s.settimeout(timeout) - s.connect((self.host, self.port)) + s.connect(self.address) return s def createSocket(self): @@ -610,7 +613,10 @@ The factory method of SocketHandler is here overridden to create a UDP socket (SOCK_DGRAM). """ - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.address_family, _, _, _, self.address = socket.getaddrinfo( + self.host, self.port, socket.AF_UNSPEC, socket.SOCK_DGRAM + )[0] + s = socket.socket(self.address_family, socket.SOCK_DGRAM) return s def send(self, s): @@ -623,7 +629,7 @@ """ if self.sock is None: self.createSocket() - self.sock.sendto(s, (self.host, self.port)) + self.sock.sendto(s, self.address) class SysLogHandler(logging.Handler): """ @@ -739,7 +745,6 @@ """ logging.Handler.__init__(self) - self.address = address self.facility = facility self.socktype = socktype @@ -748,10 +753,14 @@ self._connect_unixsocket(address) else: self.unixsocket = 0 - self.socket = socket.socket(socket.AF_INET, socktype) + address_family, _, _, _, address = socket.getaddrinfo( + address[0], address[1], socket.AF_UNSPEC, socktype + )[0] + self.socket = socket.socket(address_family, socktype) if socktype == socket.SOCK_STREAM: self.socket.connect(address) self.formatter = None + self.address = address def _connect_unixsocket(self, address): self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)