Skip to content

Commit

Permalink
responders: improve intial get_domains request
Browse files Browse the repository at this point in the history
This patch makes schedule_get_domains_task synchronous and makes sure it
is finished before client sockets are opened.
  • Loading branch information
sumit-bose committed May 5, 2017
1 parent 21f3d61 commit cff1004
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 48 deletions.
6 changes: 0 additions & 6 deletions src/responder/autofs/autofssrv.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,12 +167,6 @@ autofs_process_init(TALLOC_CTX *mem_ctx,
goto fail;
}

ret = schedule_get_domains_task(rctx, rctx->ev, rctx, NULL);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE, "schedule_get_domains_tasks failed.\n");
goto fail;
}

DEBUG(SSSDBG_TRACE_FUNC, "autofs Initialization complete\n");
return EOK;

Expand Down
16 changes: 11 additions & 5 deletions src/responder/common/responder_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -1233,10 +1233,9 @@ int sss_process_init(TALLOC_CTX *mem_ctx,
goto fail;
}

/* after all initializations we are ready to listen on our socket */
ret = activate_unix_sockets(rctx, conn_setup);
ret = responder_init_ncache(rctx, rctx->cdb, &rctx->ncache);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE, "fatal error initializing socket\n");
DEBUG(SSSDBG_CRIT_FAILURE, "fatal error initializing negcache\n");
goto fail;
}

Expand All @@ -1248,9 +1247,16 @@ int sss_process_init(TALLOC_CTX *mem_ctx,
goto fail;
}

ret = responder_init_ncache(rctx, rctx->cdb, &rctx->ncache);
ret = schedule_get_domains_task(rctx, rctx->ev, rctx, rctx->ncache);
if (ret != EOK) {
DEBUG(SSSDBG_CRIT_FAILURE, "fatal error initializing negcache\n");
DEBUG(SSSDBG_FATAL_FAILURE, "schedule_get_domains_tasks failed.\n");
goto fail;
}

/* after all initializations we are ready to listen on our socket */
ret = activate_unix_sockets(rctx, conn_setup);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE, "fatal error initializing socket\n");
goto fail;
}

Expand Down
8 changes: 8 additions & 0 deletions src/responder/common/responder_get_domains.c
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,7 @@ static errno_t check_last_request(struct resp_ctx *rctx, const char *hint)
struct get_domains_state {
struct resp_ctx *rctx;
struct sss_nc_ctx *optional_ncache;
bool get_domains_done;
};

static void get_domains_at_startup_done(struct tevent_req *req)
Expand All @@ -405,6 +406,7 @@ static void get_domains_at_startup_done(struct tevent_req *req)
}
}

state->get_domains_done = true;
talloc_free(state);
return;
}
Expand Down Expand Up @@ -443,6 +445,7 @@ errno_t schedule_get_domains_task(TALLOC_CTX *mem_ctx,
}
state->rctx = rctx;
state->optional_ncache = optional_ncache;
state->get_domains_done = false;

imm = tevent_create_immediate(mem_ctx);
if (imm == NULL) {
Expand All @@ -453,6 +456,11 @@ errno_t schedule_get_domains_task(TALLOC_CTX *mem_ctx,

tevent_schedule_immediate(imm, ev, get_domains_at_startup, state);

while (!state->get_domains_done) {
DEBUG(SSSDBG_TRACE_ALL, "Waiting for init_done ...\n");
tevent_loop_once(rctx->ev);
}

return EOK;
}

Expand Down
7 changes: 0 additions & 7 deletions src/responder/ifp/ifpsrv.c
Original file line number Diff line number Diff line change
Expand Up @@ -336,13 +336,6 @@ int ifp_process_init(TALLOC_CTX *mem_ctx,
return EIO;
}

ret = schedule_get_domains_task(rctx, rctx->ev, rctx, NULL);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE,
"schedule_get_domains_tasks failed.\n");
goto fail;
}

DEBUG(SSSDBG_TRACE_FUNC, "InfoPipe Initialization complete\n");
return EOK;

Expand Down
6 changes: 0 additions & 6 deletions src/responder/nss/nsssrv.c
Original file line number Diff line number Diff line change
Expand Up @@ -485,12 +485,6 @@ int nss_process_init(TALLOC_CTX *mem_ctx,
}
responder_set_fd_limit(fd_limit);

ret = schedule_get_domains_task(rctx, rctx->ev, rctx, nctx->rctx->ncache);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE, "schedule_get_domains_tasks failed.\n");
goto fail;
}

DEBUG(SSSDBG_TRACE_FUNC, "NSS Initialization complete\n");

return EOK;
Expand Down
6 changes: 0 additions & 6 deletions src/responder/pac/pacsrv.c
Original file line number Diff line number Diff line change
Expand Up @@ -190,12 +190,6 @@ int pac_process_init(TALLOC_CTX *mem_ctx,
goto fail;
}

ret = schedule_get_domains_task(rctx, rctx->ev, rctx, NULL);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE, "schedule_get_domains_tasks failed.\n");
goto fail;
}

DEBUG(SSSDBG_TRACE_FUNC, "PAC Initialization complete\n");

return EOK;
Expand Down
6 changes: 0 additions & 6 deletions src/responder/pam/pamsrv.c
Original file line number Diff line number Diff line change
Expand Up @@ -304,12 +304,6 @@ static int pam_process_init(TALLOC_CTX *mem_ctx,
}
responder_set_fd_limit(fd_limit);

ret = schedule_get_domains_task(rctx, rctx->ev, rctx, pctx->rctx->ncache);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE, "schedule_get_domains_tasks failed.\n");
goto done;
}

/* Check if certificate based authentication is enabled */
ret = confdb_get_bool(pctx->rctx->cdb,
CONFDB_PAM_CONF_ENTRY,
Expand Down
6 changes: 0 additions & 6 deletions src/responder/ssh/sshsrv.c
Original file line number Diff line number Diff line change
Expand Up @@ -158,12 +158,6 @@ int ssh_process_init(TALLOC_CTX *mem_ctx,
goto fail;
}

ret = schedule_get_domains_task(rctx, rctx->ev, rctx, NULL);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE, "schedule_get_domains_tasks failed.\n");
goto fail;
}

DEBUG(SSSDBG_TRACE_FUNC, "SSH Initialization complete\n");

return EOK;
Expand Down
6 changes: 0 additions & 6 deletions src/responder/sudo/sudosrv.c
Original file line number Diff line number Diff line change
Expand Up @@ -148,12 +148,6 @@ int sudo_process_init(TALLOC_CTX *mem_ctx,
goto fail;
}

ret = schedule_get_domains_task(rctx, rctx->ev, rctx, NULL);
if (ret != EOK) {
DEBUG(SSSDBG_FATAL_FAILURE, "schedule_get_domains_tasks failed.\n");
goto fail;
}

DEBUG(SSSDBG_TRACE_FUNC, "SUDO Initialization complete\n");

return EOK;
Expand Down

0 comments on commit cff1004

Please sign in to comment.