From 1b1c347311edcddac3381b6c2cfe2f86e82e2d60 Mon Sep 17 00:00:00 2001 From: Facundo Batista Date: Tue, 27 Mar 2007 18:23:21 +0000 Subject: [PATCH] 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. --- Doc/lib/libpoplib.tex | 5 ++++- Lib/poplib.py | 18 ++---------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/Doc/lib/libpoplib.tex b/Doc/lib/libpoplib.tex index 25570ae725..71c4040b94 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 1cf114abc3..ba4057215a 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() -- 2.50.1