diff --git a/src/prefork.py b/src/prefork.py
index 65b259e755be4aa69b21ef0ccc18a0b9737df2ff..0d98f79c2bbb06c3216d66c5ff6e5361070728db 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: