Kaydet (Commit) 1b1c3473 authored tarafından Facundo Batista's avatar Facundo Batista

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.
üst 3f100992
...@@ -28,10 +28,13 @@ servers tend to be better implemented. ...@@ -28,10 +28,13 @@ servers tend to be better implemented.
A single class is provided by the \module{poplib} module: 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 This class implements the actual POP3 protocol. The connection is
created when the instance is initialized. created when the instance is initialized.
If \var{port} is omitted, the standard POP3 port (110) is used. 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} \end{classdesc}
\begin{classdesc}{POP3_SSL}{host\optional{, port\optional{, keyfile\optional{, certfile}}}} \begin{classdesc}{POP3_SSL}{host\optional{, port\optional{, keyfile\optional{, certfile}}}}
......
...@@ -76,24 +76,10 @@ class POP3: ...@@ -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.host = host
self.port = port self.port = port
msg = "getaddrinfo returns an empty list" self.sock = socket.create_connection((host, port), timeout)
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.file = self.sock.makefile('rb') self.file = self.sock.makefile('rb')
self._debugging = 0 self._debugging = 0
self.welcome = self._getresp() self.welcome = self._getresp()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment