1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-07 12:23:51 +03:00

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>
This commit is contained in:
Simo Sorce
2011-08-16 12:01:02 -04:00
parent f07f5c5100
commit 89dde6b7fc

View File

@@ -292,8 +292,6 @@ struct lsasd_children_data {
struct pf_worker_data *pf; struct pf_worker_data *pf;
int listen_fd_size; int listen_fd_size;
int *listen_fds; int *listen_fds;
bool listening;
}; };
static void lsasd_next_client(void *pvt); 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->msg_ctx = msg_ctx;
data->listen_fd_size = listen_fd_size; data->listen_fd_size = listen_fd_size;
data->listen_fds = listen_fds; data->listen_fds = listen_fds;
data->listening = false;
/* loop until it is time to exit */ /* loop until it is time to exit */
while (pf->status != PF_WORKER_EXITING) { 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); data = talloc_get_type_abort(pvt, struct lsasd_children_data);
if (data->pf->num_clients) { pfh_client_terminated(data->pf);
data->pf->num_clients--;
} else {
DEBUG(2, ("Invalid num clients, aborting!\n"));
data->pf->status = PF_WORKER_EXITING;
return;
}
lsasd_next_client(pvt); 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); data = talloc_get_type_abort(pvt, struct lsasd_children_data);
if (data->pf->num_clients == 0) { if (!pfh_child_allowed_to_accept(data->pf)) {
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) {
/* nothing to do for now we are already listening /* nothing to do for now we are already listening
* or reached the number of clients we are allowed * or we are not allowed to listen further */
* to handle in parallel */
return; return;
} }
@@ -408,8 +388,6 @@ static void lsasd_next_client(void *pvt)
return; return;
} }
tevent_req_set_callback(req, lsasd_handle_client, next); tevent_req_set_callback(req, lsasd_handle_client, next);
data->listening = true;
} }
static void lsasd_handle_client(struct tevent_req *req) 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 */ /* this will free the request too */
talloc_free(client); talloc_free(client);
/* we are done listening */
data->listening = false;
if (rc != 0) { if (rc != 0) {
DEBUG(6, ("No client connection was available after all!\n")); DEBUG(6, ("No client connection was available after all!\n"));