From 75d30d6bb50f6d60b3401c2f7dd120524e83650f Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Wed, 2 Dec 2009 14:44:53 +0100 Subject: Setup ldap child logging from IPA backend Fixes: #296 --- server/providers/ipa/ipa_init.c | 7 +++++ server/providers/ldap/ldap_common.h | 3 ++ server/providers/ldap/ldap_init.c | 45 ------------------------------ server/providers/ldap/sdap_child_helpers.c | 44 +++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 45 deletions(-) (limited to 'server') diff --git a/server/providers/ipa/ipa_init.c b/server/providers/ipa/ipa_init.c index a187d1590..10b9257a2 100644 --- a/server/providers/ipa/ipa_init.c +++ b/server/providers/ipa/ipa_init.c @@ -140,6 +140,13 @@ int sssm_ipa_init(struct be_ctx *bectx, goto done; } + ret = setup_child(ctx); + if (ret != EOK) { + DEBUG(1, ("setup_child failed [%d][%s].\n", + ret, strerror(ret))); + goto done; + } + *ops = &ipa_id_ops; *pvt_data = ctx; ret = EOK; diff --git a/server/providers/ldap/ldap_common.h b/server/providers/ldap/ldap_common.h index 188a7b986..b1985455c 100644 --- a/server/providers/ldap/ldap_common.h +++ b/server/providers/ldap/ldap_common.h @@ -108,4 +108,7 @@ struct tevent_req *groups_get_send(TALLOC_CTX *memctx, int attrs_type); int groups_get_recv(struct tevent_req *req); +/* setup child logging */ +int setup_child(struct sdap_id_ctx *ctx); + #endif /* _LDAP_COMMON_H_ */ diff --git a/server/providers/ldap/ldap_init.c b/server/providers/ldap/ldap_init.c index c6241bf5d..b1f053fbc 100644 --- a/server/providers/ldap/ldap_init.c +++ b/server/providers/ldap/ldap_init.c @@ -22,8 +22,6 @@ along with this program. If not, see . */ -#include - #include "providers/child_common.h" #include "providers/ldap/ldap_common.h" #include "providers/ldap/sdap_async_private.h" @@ -48,49 +46,6 @@ struct bet_ops sdap_chpass_ops = { .finalize = sdap_shutdown }; -static int setup_child(struct sdap_id_ctx *ctx) -{ - int ret; - const char *mech; - struct tevent_signal *sige; - unsigned v; - FILE *debug_filep; - - mech = dp_opt_get_string(ctx->opts->basic, - SDAP_SASL_MECH); - if (!mech) { - return EOK; - } - - sige = tevent_add_signal(ctx->be->ev, ctx, SIGCHLD, SA_SIGINFO, - child_sig_handler, NULL); - if (sige == NULL) { - DEBUG(1, ("tevent_add_signal failed.\n")); - return ENOMEM; - } - - if (debug_to_file != 0 && ldap_child_debug_fd == -1) { - ret = open_debug_file_ex("ldap_child", &debug_filep); - if (ret != EOK) { - DEBUG(0, ("Error setting up logging (%d) [%s]\n", - ret, strerror(ret))); - return ret; - } - - ldap_child_debug_fd = fileno(debug_filep); - if (ldap_child_debug_fd == -1) { - DEBUG(0, ("fileno failed [%d][%s]\n", errno, strerror(errno))); - ret = errno; - return ret; - } - - v = fcntl(ldap_child_debug_fd, F_GETFD, 0); - fcntl(ldap_child_debug_fd, F_SETFD, v & ~FD_CLOEXEC); - } - - return EOK; -} - int sssm_ldap_init(struct be_ctx *bectx, struct bet_ops **ops, void **pvt_data) diff --git a/server/providers/ldap/sdap_child_helpers.c b/server/providers/ldap/sdap_child_helpers.c index 85f7d3c86..69b246ca7 100644 --- a/server/providers/ldap/sdap_child_helpers.c +++ b/server/providers/ldap/sdap_child_helpers.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "util/util.h" #include "providers/ldap/ldap_common.h" @@ -498,3 +499,46 @@ int sdap_krb5_get_tgt_recv(struct tevent_req *req, return EOK; } +/* Setup child logging */ +int setup_child(struct sdap_id_ctx *ctx) +{ + int ret; + const char *mech; + struct tevent_signal *sige; + unsigned v; + FILE *debug_filep; + + mech = dp_opt_get_string(ctx->opts->basic, + SDAP_SASL_MECH); + if (!mech) { + return EOK; + } + + sige = tevent_add_signal(ctx->be->ev, ctx, SIGCHLD, SA_SIGINFO, + child_sig_handler, NULL); + if (sige == NULL) { + DEBUG(1, ("tevent_add_signal failed.\n")); + return ENOMEM; + } + + if (debug_to_file != 0 && ldap_child_debug_fd == -1) { + ret = open_debug_file_ex("ldap_child", &debug_filep); + if (ret != EOK) { + DEBUG(0, ("Error setting up logging (%d) [%s]\n", + ret, strerror(ret))); + return ret; + } + + ldap_child_debug_fd = fileno(debug_filep); + if (ldap_child_debug_fd == -1) { + DEBUG(0, ("fileno failed [%d][%s]\n", errno, strerror(errno))); + ret = errno; + return ret; + } + + v = fcntl(ldap_child_debug_fd, F_GETFD, 0); + fcntl(ldap_child_debug_fd, F_SETFD, v & ~FD_CLOEXEC); + } + + return EOK; +} -- cgit