merge this from trunk:

r58067 | gregory.p.smith | 2007-09-09 16:36:46 -0700 (Sun, 09 Sep 2007) | 22 lin
es

Change socket.error to inherit from IOError rather than being a stand
alone class.  This addresses the primary concern in

 http://bugs.python.org/issue1706815

python-dev discussion here:

 http://mail.python.org/pipermail/python-dev/2007-July/073749.html

I chose IOError rather than EnvironmentError as the base class since
socket objects are often used as transparent duck typed file objects
in code already prepared to deal with IOError exceptions.

also a minor fix:

 urllib2 - fix a couple places where IOError was raised rather than URLError.
           for better or worse, URLError already inherits from IOError so
           this won't break any existing code.

 test_urllib2net - replace bad ftp urls.
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 58e0153..2aa90d7 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -1240,7 +1240,7 @@
         import mimetypes
         host = req.get_host()
         if not host:
-            raise IOError('ftp error', 'no host given')
+            raise URLError('ftp error', 'no host given')
         host, port = splitport(host)
         if port is None:
             port = ftplib.FTP_PORT
@@ -1286,7 +1286,7 @@
             headers = mimetools.Message(sf)
             return addinfourl(fp, headers, req.get_full_url())
         except ftplib.all_errors as msg:
-            raise IOError('ftp error', msg).with_traceback(sys.exc_info()[2])
+            raise URLError('ftp error', msg).with_traceback(sys.exc_info()[2])
 
     def connect_ftp(self, user, passwd, host, port, dirs, timeout):
         fw = ftpwrapper(user, passwd, host, port, dirs, timeout)