Blob Blame History Raw
diff -up CherryPy-2.3.0/cherrypy/_cpwsgiserver.py.bak CherryPy-2.3.0/cherrypy/_cpwsgiserver.py
--- CherryPy-2.3.0/cherrypy/_cpwsgiserver.py.bak	2008-01-17 15:57:48.000000000 -0800
+++ CherryPy-2.3.0/cherrypy/_cpwsgiserver.py	2008-01-17 15:59:32.000000000 -0800
@@ -404,6 +404,13 @@ class CherryPyWSGIServer(object):
             # accept() by default
             return
         except socket.error, x:
+            if hasattr(errno, "EINTR") and x.args[0] == errno.EINTR:
+                # I *think* this is right. EINTR should occur when a signal
+                # is received during the accept() call; all docs say retry
+                # the call, and I *think* I'm reading it right that Python
+                # will then go ahead and poll for and handle the signal
+                # elsewhere. See http://www.cherrypy.org/ticket/707.
+                return
             msg = x.args[1]
             if msg == "Bad file descriptor":
                 # Our socket was closed