summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Nelson <jnelson@jamponi.net>2009-08-17 13:46:42 -0500
committerJon Nelson <jnelson@jamponi.net>2009-08-17 13:46:42 -0500
commit012f34a4dad6589d8b43f234e07d508fb80ef1a2 (patch)
tree0526a4f60a9a849316bc7354daea312a8b4c945b
parenteb9cadee8623d0f76fe3cced30398bcbab59cfec (diff)
downloadflup-012f34a4dad6589d8b43f234e07d508fb80ef1a2.tar.gz
fix fork bomb and check number of children against minSpare not maxSpare
-rw-r--r--flup/server/preforkserver.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/flup/server/preforkserver.py b/flup/server/preforkserver.py
index 7d0064b..b7b2ff1 100644
--- a/flup/server/preforkserver.py
+++ b/flup/server/preforkserver.py
@@ -102,6 +102,11 @@ class PreforkServer(object):
self._children_to_purge = []
self._last_purge = 0
+ if minSpare < 1:
+ raise ValueError("minSpare must be at least 1!")
+ if maxSpare < minSpare:
+ raise ValueError("maxSpare must be greater than, or equal to, minSpare!")
+
def run(self, sock):
"""
The main loop. Pass a socket that is ready to accept() client
@@ -122,7 +127,7 @@ class PreforkServer(object):
# Main loop.
while self._keepGoing:
# Maintain minimum number of children.
- while len(self._children) < self._maxSpare:
+ while len(self._children) < self._minSpare:
if not self._spawnChild(sock): break
# Wait on any socket activity from live children.