diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst
index 9081cf7..623d73b 100644
--- a/Doc/library/exceptions.rst
+++ b/Doc/library/exceptions.rst
@@ -170,6 +170,9 @@
    This class is derived from :exc:`EnvironmentError`.  See the discussion above
    for more information on exception instance attributes.
 
+   .. versionchanged:: 2.6
+      Changed :exc:`socket.error` to use this as a base class.
+
 
 .. exception:: ImportError
 
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index ca4515f..dbe7e66 100644
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -86,6 +86,9 @@
    accompanying :exc:`os.error`. See the module :mod:`errno`, which contains names
    for the error codes defined by the underlying operating system.
 
+   .. versionchanged:: 2.6
+      :exc:`socket.error` is now a child class of :exc:`IOError`.
+
 
 .. exception:: herror
 
diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst
index a5ed869..6c799fd 100644
--- a/Doc/whatsnew/2.6.rst
+++ b/Doc/whatsnew/2.6.rst
@@ -282,7 +282,8 @@
 This section lists previously described changes that may require changes to your
 code:
 
-* Everything is all in the details!
+* The :mod:`socket` module exception :exc:`socket.error` now inherits from 
+  :exc:`IOError`.
 
 .. % ======================================================================
 
diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py
index c363140..9d4f463 100644
--- a/Lib/test/test_urllib2net.py
+++ b/Lib/test/test_urllib2net.py
@@ -166,8 +166,9 @@
 
     def test_ftp(self):
         urls = [
-            'ftp://www.python.org/pub/python/misc/sousa.au',
-            'ftp://www.python.org/pub/tmp/blat',
+            'ftp://ftp.kernel.org/pub/linux/kernel/README',
+            'ftp://ftp.kernel.org/pub/linux/kernel/non-existant-file',
+            #'ftp://ftp.kernel.org/pub/leenox/kernel/test',
             'ftp://gatekeeper.research.compaq.com/pub/DEC/SRC'
                 '/research-reports/00README-Legal-Rules-Regs',
             ]
@@ -181,10 +182,7 @@
             f.close()
             urls = [
                 'file:'+sanepathname2url(os.path.abspath(TESTFN)),
-
-                # XXX bug, should raise URLError
-                #('file://nonsensename/etc/passwd', None, urllib2.URLError)
-                ('file://nonsensename/etc/passwd', None, (EnvironmentError, socket.error))
+                ('file:///nonsensename/etc/passwd', None, urllib2.URLError),
                 ]
             self._test_urls(urls, self._extra_handlers())
         finally:
@@ -244,11 +242,11 @@
             debug(url)
             try:
                 f = urllib2.urlopen(url, req)
-            except (IOError, socket.error, OSError), err:
+            except EnvironmentError, err:
                 debug(err)
                 if expected_err:
-                    msg = ("Didn't get expected error(s) %s for %s %s, got %s" %
-                           (expected_err, url, req, err))
+                    msg = ("Didn't get expected error(s) %s for %s %s, got %s: %s" %
+                           (expected_err, url, req, type(err), err))
                     self.assert_(isinstance(err, expected_err), msg)
             else:
                 with test_support.transient_internet():
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index b2cec72..5a6f499 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -1246,7 +1246,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
@@ -1292,7 +1292,7 @@
             headers = mimetools.Message(sf)
             return addinfourl(fp, headers, req.get_full_url())
         except ftplib.all_errors, msg:
-            raise IOError, ('ftp error', msg), sys.exc_info()[2]
+            raise URLError, ('ftp error', msg), sys.exc_info()[2]
 
     def connect_ftp(self, user, passwd, host, port, dirs, timeout):
         fw = ftpwrapper(user, passwd, host, port, dirs, timeout)
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index d319ca3..410398e 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -4280,7 +4280,8 @@
 	if (m == NULL)
 		return;
 
-	socket_error = PyErr_NewException("socket.error", NULL, NULL);
+	socket_error = PyErr_NewException("socket.error",
+					  PyExc_IOError, NULL);
 	if (socket_error == NULL)
 		return;
         PySocketModuleAPI.error = socket_error;
