Fix the patch for issue #7978: select() raises select.error before 3.3, not OSError.
diff --git a/Lib/SocketServer.py b/Lib/SocketServer.py
index a44e137..1594321 100644
--- a/Lib/SocketServer.py
+++ b/Lib/SocketServer.py
@@ -153,8 +153,8 @@
     while True:
         try:
             return func(*args)
-        except OSError as e:
-            if e.errno != errno.EINTR:
+        except (OSError, select.error) as e:
+            if e.args[0] != errno.EINTR:
                 raise
 
 class BaseServer:
diff --git a/Lib/test/test_socketserver.py b/Lib/test/test_socketserver.py
index 3c7287a..3b333bc 100644
--- a/Lib/test/test_socketserver.py
+++ b/Lib/test/test_socketserver.py
@@ -243,7 +243,7 @@
                 self.called += 1
                 if self.called == 1:
                     # raise the exception on first call
-                    raise OSError(errno.EINTR, os.strerror(errno.EINTR))
+                    raise select.error(errno.EINTR, os.strerror(errno.EINTR))
                 else:
                     # Return real select value for consecutive calls
                     return old_select(*args)