http://bugs.python.org/issue6381
merging revision 73819 from trunk
diff --git a/Lib/socketserver.py b/Lib/socketserver.py
index e5f5778..37df2ba 100644
--- a/Lib/socketserver.py
+++ b/Lib/socketserver.py
@@ -445,7 +445,12 @@
 
     def close_request(self, request):
         """Called to clean up an individual request."""
-        request.shutdown(socket.SHUT_WR)
+        try:
+            #explicitly shutdown.  socket.close() merely releases
+            #the socket and waits for GC to perform the actual close.
+            request.shutdown(socket.SHUT_WR)
+        except socket.error:
+            pass #some platforms may raise ENOTCONN here
         request.close()