diff options
author | Simo Sorce <idra@samba.org> | 2011-08-16 12:01:02 -0400 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2011-08-21 09:05:05 -0400 |
commit | 89dde6b7fce3342c828f166e7d76bf4656939ee4 (patch) | |
tree | dff74ba37423b69e5e3c205fdeeeee50078bf0f4 /source3 | |
parent | f07f5c51000ed9403134e8f4eb3318ec6d572342 (diff) | |
download | samba-89dde6b7fce3342c828f166e7d76bf4656939ee4.tar.gz samba-89dde6b7fce3342c828f166e7d76bf4656939ee4.tar.bz2 samba-89dde6b7fce3342c828f166e7d76bf4656939ee4.zip |
s3-lsasd: User new prefork helpers to simplify code.
Signed-off-by: Andreas Schneider <asn@samba.org>
Signed-off-by: Simo Sorce <idra@samba.org>
Diffstat (limited to 'source3')
-rw-r--r-- | source3/rpc_server/lsasd.c | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/source3/rpc_server/lsasd.c b/source3/rpc_server/lsasd.c index 043165fe13..c53eb5f379 100644 --- a/source3/rpc_server/lsasd.c +++ b/source3/rpc_server/lsasd.c @@ -292,8 +292,6 @@ struct lsasd_children_data { struct pf_worker_data *pf; int listen_fd_size; int *listen_fds; - - bool listening; }; static void lsasd_next_client(void *pvt); @@ -324,7 +322,6 @@ static int lsasd_children_main(struct tevent_context *ev_ctx, data->msg_ctx = msg_ctx; data->listen_fd_size = listen_fd_size; data->listen_fds = listen_fds; - data->listening = false; /* loop until it is time to exit */ while (pf->status != PF_WORKER_EXITING) { @@ -348,13 +345,7 @@ static void lsasd_client_terminated(void *pvt) data = talloc_get_type_abort(pvt, struct lsasd_children_data); - if (data->pf->num_clients) { - data->pf->num_clients--; - } else { - DEBUG(2, ("Invalid num clients, aborting!\n")); - data->pf->status = PF_WORKER_EXITING; - return; - } + pfh_client_terminated(data->pf); lsasd_next_client(pvt); } @@ -373,20 +364,9 @@ static void lsasd_next_client(void *pvt) data = talloc_get_type_abort(pvt, struct lsasd_children_data); - if (data->pf->num_clients == 0) { - data->pf->status = PF_WORKER_ALIVE; - } - - if (data->pf->cmds == PF_SRV_MSG_EXIT) { - DEBUG(2, ("Parent process commands we terminate!\n")); - return; - } - - if (data->listening || - data->pf->num_clients >= data->pf->allowed_clients) { + if (!pfh_child_allowed_to_accept(data->pf)) { /* nothing to do for now we are already listening - * or reached the number of clients we are allowed - * to handle in parallel */ + * or we are not allowed to listen further */ return; } @@ -408,8 +388,6 @@ static void lsasd_next_client(void *pvt) return; } tevent_req_set_callback(req, lsasd_handle_client, next); - - data->listening = true; } static void lsasd_handle_client(struct tevent_req *req) @@ -439,8 +417,6 @@ static void lsasd_handle_client(struct tevent_req *req) /* this will free the request too */ talloc_free(client); - /* we are done listening */ - data->listening = false; if (rc != 0) { DEBUG(6, ("No client connection was available after all!\n")); |