]> granicus.if.org Git - python/commitdiff
Added an optional timeout to poplib.POP3. Also created a
authorFacundo Batista <facundobatista@gmail.com>
Tue, 27 Mar 2007 18:23:21 +0000 (18:23 +0000)
committerFacundo Batista <facundobatista@gmail.com>
Tue, 27 Mar 2007 18:23:21 +0000 (18:23 +0000)
test_poplib.py file with a basic test and the timeout
ones. Docs are also updated.

Doc/lib/libpoplib.tex
Lib/poplib.py

index 25570ae7250da828244c4921b68a1601e0ccbb54..71c4040b9433e44389cf8e255569404151ea6f59 100644 (file)
@@ -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}}}}
index 1cf114abc39f9c8fb3ce5e67ff7f0b26ef6c9775..ba4057215ab300490c107e0fa994e82ed00e07b2 100644 (file)
@@ -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()