summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/providers/ldap/ldap_init.c54
1 files changed, 41 insertions, 13 deletions
diff --git a/src/providers/ldap/ldap_init.c b/src/providers/ldap/ldap_init.c
index 976448194..fdf511002 100644
--- a/src/providers/ldap/ldap_init.c
+++ b/src/providers/ldap/ldap_init.c
@@ -83,9 +83,9 @@ errno_t check_order_list_for_duplicates(char **list,
return EOK;
}
-int sssm_ldap_id_init(struct be_ctx *bectx,
- struct bet_ops **ops,
- void **pvt_data)
+static int ldap_id_init_internal(struct be_ctx *bectx,
+ struct bet_ops **ops,
+ void **pvt_data)
{
struct sdap_id_ctx *ctx;
const char *urls;
@@ -161,11 +161,6 @@ int sssm_ldap_id_init(struct be_ctx *bectx,
if (ret != EOK) goto done;
}
- ret = sdap_id_setup_tasks(ctx);
- if (ret != EOK) {
- goto done;
- }
-
ret = setup_child(ctx);
if (ret != EOK) {
DEBUG(1, ("setup_child failed [%d][%s].\n",
@@ -194,6 +189,39 @@ done:
return ret;
}
+int sssm_ldap_id_init(struct be_ctx *bectx,
+ struct bet_ops **ops,
+ void **pvt_data)
+{
+ int ret;
+ struct sdap_id_ctx *ctx = NULL;
+
+ ret = ldap_id_init_internal(bectx, ops, (void **) &ctx);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_MINOR_FAILURE,
+ ("ldap_id_init_internal failed [%d][%s].\n",
+ ret, strerror(ret)));
+ goto done;
+ }
+
+ ret = sdap_id_setup_tasks(ctx);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_MINOR_FAILURE,
+ ("sdap_id_setup_tasks failed [%d][%s].\n",
+ ret, strerror(ret)));
+ goto done;
+ }
+
+ *pvt_data = ctx;
+ ret = EOK;
+
+done:
+ if (ret != EOK) {
+ talloc_free(ctx);
+ }
+ return ret;
+}
+
int sssm_ldap_auth_init(struct be_ctx *bectx,
struct bet_ops **ops,
void **pvt_data)
@@ -203,7 +231,7 @@ int sssm_ldap_auth_init(struct be_ctx *bectx,
struct sdap_auth_ctx *ctx;
int ret;
- ret = sssm_ldap_id_init(bectx, ops, &data);
+ ret = ldap_id_init_internal(bectx, ops, &data);
if (ret == EOK) {
id_ctx = talloc_get_type(data, struct sdap_id_ctx);
@@ -294,9 +322,9 @@ int sssm_ldap_access_init(struct be_ctx *bectx,
goto done;
}
- ret = sssm_ldap_id_init(bectx, ops, (void **)&access_ctx->id_ctx);
+ ret = ldap_id_init_internal(bectx, ops, (void **)&access_ctx->id_ctx);
if (ret != EOK) {
- DEBUG(1, ("sssm_ldap_id_init failed.\n"));
+ DEBUG(SSSDBG_CRIT_FAILURE, ("ldap_id_init_internal failed.\n"));
goto done;
}
@@ -417,7 +445,7 @@ int sssm_ldap_sudo_init(struct be_ctx *be_ctx,
void *data;
int ret;
- ret = sssm_ldap_id_init(be_ctx, ops, &data);
+ ret = ldap_id_init_internal(be_ctx, ops, &data);
if (ret != EOK) {
DEBUG(SSSDBG_CRIT_FAILURE, ("Cannot init LDAP ID provider [%d]: %s\n",
ret, strerror(ret)));
@@ -447,7 +475,7 @@ int sssm_ldap_autofs_init(struct be_ctx *be_ctx,
void *data;
int ret;
- ret = sssm_ldap_id_init(be_ctx, ops, &data);
+ ret = ldap_id_init_internal(be_ctx, ops, &data);
if (ret != EOK) {
DEBUG(SSSDBG_CRIT_FAILURE, ("Cannot init LDAP ID provider [%d]: %s\n",
ret, strerror(ret)));