From 179458c3d438289703f58a9ef37880e297000145 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Wed, 15 Apr 2009 01:44:45 -0400
Subject: [PATCH] Make prefork server respond properly to parent exit.

---
 src/prefork.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/prefork.py b/src/prefork.py
index 65b259e..0d98f79 100644
--- a/src/prefork.py
+++ b/src/prefork.py
@@ -35,7 +35,15 @@ def _send_packet(sock, data):
 
 def _recv_packet(sock):
     from struct import calcsize, unpack
-    size, = unpack("I", sock.recv(calcsize("I")))
+    size_bytes_size = calcsize("I")
+    size_bytes = sock.recv(size_bytes_size)
+
+    if len(size_bytes) < size_bytes_size:
+        from warnings import warn
+        warn("Prefork server exiting upon apparent death of parent")
+        raise SystemExit
+
+    size, = unpack("I", size_bytes)
 
     packet = ""
     while len(packet) < size:
-- 
GitLab