From: Facundo Batista Date: Tue, 27 Mar 2007 18:23:21 +0000 (+0000) Subject: Added an optional timeout to poplib.POP3. Also created a X-Git-Tag: v2.6a1~1924 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1b1c347311edcddac3381b6c2cfe2f86e82e2d60;p=thirdparty%2FPython%2Fcpython.git Added an optional timeout to poplib.POP3. Also created a test_poplib.py file with a basic test and the timeout ones. Docs are also updated. --- diff --git a/Doc/lib/libpoplib.tex b/Doc/lib/libpoplib.tex index 25570ae7250d..71c4040b9433 100644 --- a/Doc/lib/libpoplib.tex +++ b/Doc/lib/libpoplib.tex @@ -28,10 +28,13 @@ servers tend to be better implemented. A single class is provided by the \module{poplib} module: -\begin{classdesc}{POP3}{host\optional{, port}} +\begin{classdesc}{POP3}{host\optional{, port\optional{, timeout}}} This class implements the actual POP3 protocol. The connection is created when the instance is initialized. If \var{port} is omitted, the standard POP3 port (110) is used. +The optional \var{timeout} parameter specifies a timeout in seconds for the +connection attempt (if not specified, or passed as None, the global default +timeout setting will be used). \end{classdesc} \begin{classdesc}{POP3_SSL}{host\optional{, port\optional{, keyfile\optional{, certfile}}}} diff --git a/Lib/poplib.py b/Lib/poplib.py index 1cf114abc39f..ba4057215ab3 100644 --- a/Lib/poplib.py +++ b/Lib/poplib.py @@ -76,24 +76,10 @@ class POP3: """ - def __init__(self, host, port = POP3_PORT): + def __init__(self, host, port=POP3_PORT, timeout=None): self.host = host self.port = port - msg = "getaddrinfo returns an empty list" - self.sock = None - for res in socket.getaddrinfo(self.host, self.port, 0, socket.SOCK_STREAM): - af, socktype, proto, canonname, sa = res - try: - self.sock = socket.socket(af, socktype, proto) - self.sock.connect(sa) - except socket.error, msg: - if self.sock: - self.sock.close() - self.sock = None - continue - break - if not self.sock: - raise socket.error, msg + self.sock = socket.create_connection((host, port), timeout) self.file = self.sock.makefile('rb') self._debugging = 0 self.welcome = self._getresp()