mpd.py: updating _connect_tcp() with new socket code
authorJ. Alexander Treuman <jat@spatialrift.net>
Mon, 29 Nov 2010 01:36:36 +0000 (20:36 -0500)
committerJ. Alexander Treuman <jat@spatialrift.net>
Mon, 29 Nov 2010 01:36:36 +0000 (20:36 -0500)
commit46753bf1c1e917dee5ba9ced19fbf1f6a9c103ca
treeb931b5468d9319928e0e1c3f3aeb82a5f4718957
parent5db30b98502c9bb46d95ce8797fcbcfa7058bfcc
mpd.py: updating _connect_tcp() with new socket code

_connect_tcp() is largely based on Python's socket.create_connection().
Previously, this code contained two bugs related to raising exceptions.

The first bug was introduced by my clumsy attempt to update the code to use
the new preferred method of raising exceptions (the same mistake was made
in the Python 3 port of the socket module).  Instead of raising
socket.error with the value of the original exception, socket.error was
raised with the original exception as the value of the new exception, thus
nesting an exception within an exception.  Python 3.1.3 fixed this by
simply re-raising the original exception.

The second bug is hit when getaddrinfo() returns an empty list.  A
socket.error is raised with a single string as its argument, instead of a
2-tuple as required by its parent class, IOError.  This bug continues to
persist in Python 3.1.3 as well as the latest svn tree.

This commit updates _connect_tcp() to be a nearly identical copy of the
Python 3.1.3 version of socket.create_connection(), except that
ConnectionError is raised when getaddrinfo() returns an empty list.
mpd.py