Added a 'create_connect()' function to socket.py, which creates a

connection with an optional timeout, and modified httplib.py to
use this function in HTTPConnection. Applies patch 1676823.
This commit is contained in:
Facundo Batista 2007-03-23 18:54:07 +00:00
parent f102e24bd3
commit 07c78be0b4
7 changed files with 181 additions and 25 deletions

View file

@ -24,6 +24,7 @@ inet_ntoa() -- convert 32-bit packed format IP to string (123.45.67.89)
ssl() -- secure socket layer support (only available if configured)
socket.getdefaulttimeout() -- get the default timeout value
socket.setdefaulttimeout() -- set the default timeout value
create_connection() -- connects to an address, with an optional timeout
[*] not available on all platforms!
@ -412,3 +413,31 @@ class _fileobject(object):
if not line:
raise StopIteration
return line
def create_connection(address, timeout=None):
"""Connect to address (host, port) with an optional timeout.
Provides access to socketobject timeout for higher-level
protocols. Passing a timeout will set the timeout on the
socket instance (if not present, or passed as None, the
default global timeout setting will be used).
"""
msg = "getaddrinfo returns an empty list"
host, port = address
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
af, socktype, proto, canonname, sa = res
sock = None
try:
sock = socket(af, socktype, proto)
if timeout is not None:
sock.settimeout(timeout)
sock.connect(sa)
return sock
except error, msg:
if sock is not None:
sock.close()
raise error, msg