[Python-Dev] I vote to reject: Adding timeout to socket.py and httplib.py.
Alan Kennedy
python-dev at alan.kennedy.name
Wed Mar 21 14:10:20 CET 2007
[Facundo]
> Voting is open, ;)
So what are we voting on exactly? The patch as it currently is? The
patch has not been updated to reflect recent discussions on the list.
Will the patch be updated before the vote?
I have one more issue with the patch.
I think that the exception handling in the function is wrong. This is
(approximately) the way the patch is currently defined.
def create_connection(address, **kwargs):
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:
[snip]
return socket
except error, err:
msg = str(err) # <-- don't do this
if sock is not None:
sock.close()
raise error(msg)
Changing the exception to with msg = str(err) is the wrong thing to
do: this will hide the exception and make comparisons with symbolic
constants fail, for users that want to handle exceptions.
The correct way to handle
1. An empty return from getaddrinfo()
2. Other socket errors
is as follows
def create_connection(address, **kwargs):
host, port = address
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
af, socktype, proto, canonname, sa = res
sock = None
try:
[snip]
return new_socket
except error, err:
if sock is not None:
sock.close()
raise err
else:
raise error("getaddrinfo returns an empty list")
[Facundo]
> Or it's just denial towards this patch?
I think this patch is poorly designed and poorly implemented. There
are multiple problems in its 17 lines of socket module code; every
time I look I find a new problem.
Sorry.
Alan.
More information about the Python-Dev
mailing list