summaryrefslogtreecommitdiff
path: root/source3/lib/server_prefork_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/lib/server_prefork_util.c')
-rw-r--r--source3/lib/server_prefork_util.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/source3/lib/server_prefork_util.c b/source3/lib/server_prefork_util.c
index 6b1e249335..8d7d0d2bb5 100644
--- a/source3/lib/server_prefork_util.c
+++ b/source3/lib/server_prefork_util.c
@@ -115,3 +115,26 @@ void pfh_manage_pool(struct tevent_context *ev_ctx,
DEBUG(10, ("Stats: children: %d, allowed connections: %d\n",
total, prefork_count_allowed_connections(pool)));
}
+
+void pfh_client_terminated(struct pf_worker_data *pf)
+{
+ if (pf->num_clients >= 0) {
+ pf->num_clients--;
+ } else {
+ if (pf->status != PF_WORKER_EXITING) {
+ DEBUG(1, ("Invalid num clients, stopping!\n"));
+ }
+ pf->status = PF_WORKER_EXITING;
+ pf->num_clients = -1;
+ }
+}
+
+bool pfh_child_allowed_to_accept(struct pf_worker_data *pf)
+{
+ if (pf->status == PF_WORKER_EXITING ||
+ pf->status == PF_WORKER_ACCEPTING) {
+ return false;
+ }
+
+ return (pf->num_clients < pf->allowed_clients);
+}