]> granicus.if.org Git - python/commitdiff
http://bugs.python.org/issue6382
authorKristján Valur Jónsson <kristjan@ccpgames.com>
Sun, 5 Jul 2009 20:56:57 +0000 (20:56 +0000)
committerKristján Valur Jónsson <kristjan@ccpgames.com>
Sun, 5 Jul 2009 20:56:57 +0000 (20:56 +0000)
close_request() (which can send a socket.shutdown()) must be called by the child process in a forking server.  The parent must merely close the socket handle.

Lib/SocketServer.py

index 08f005b0864de91db3f0314ae867381fc4552b75..20b8203dbe7851d2756ee56a673258c31a5eb3ae 100644 (file)
@@ -532,17 +532,19 @@ class ForkingMixIn:
             if self.active_children is None:
                 self.active_children = []
             self.active_children.append(pid)
-            self.close_request(request)
+            request.close() #close socket handle in parent process
             return
         else:
             # Child process.
             # This must never return, hence os._exit()!
             try:
                 self.finish_request(request, client_address)
+                self.close_request(request)
                 os._exit(0)
             except:
                 try:
                     self.handle_error(request, client_address)
+                    self.close_request(request)
                 finally:
                     os._exit(1)