summaryrefslogtreecommitdiffstats
path: root/src/providers/ldap/sdap_async_sudo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/providers/ldap/sdap_async_sudo.c')
-rw-r--r--src/providers/ldap/sdap_async_sudo.c41
1 files changed, 12 insertions, 29 deletions
diff --git a/src/providers/ldap/sdap_async_sudo.c b/src/providers/ldap/sdap_async_sudo.c
index 24ee353fc..fad936c39 100644
--- a/src/providers/ldap/sdap_async_sudo.c
+++ b/src/providers/ldap/sdap_async_sudo.c
@@ -46,7 +46,6 @@ struct sdap_sudo_refresh_state {
const char *sysdb_filter; /* delete */
int dp_error;
- int error;
char *highest_usn;
size_t num_rules;
};
@@ -131,8 +130,7 @@ struct tevent_req *sdap_sudo_refresh_send(TALLOC_CTX *mem_ctx,
state->domain = be_ctx->domain;
state->ldap_filter = talloc_strdup(state, ldap_filter);
state->sysdb_filter = talloc_strdup(state, sysdb_filter);
- state->dp_error = DP_ERR_OK;
- state->error = EOK;
+ state->dp_error = DP_ERR_FATAL;
state->highest_usn = NULL;
if (state->ldap_filter == NULL) {
@@ -165,7 +163,6 @@ immediately:
int sdap_sudo_refresh_recv(TALLOC_CTX *mem_ctx,
struct tevent_req *req,
int *dp_error,
- int *error,
char **usn,
size_t *num_rules)
{
@@ -176,7 +173,6 @@ int sdap_sudo_refresh_recv(TALLOC_CTX *mem_ctx,
TEVENT_REQ_RETURN_ON_ERROR(req);
*dp_error = state->dp_error;
- *error = state->error;
if (usn != NULL && state->highest_usn != NULL) {
*usn = talloc_steal(mem_ctx, state->highest_usn);
@@ -202,18 +198,14 @@ static int sdap_sudo_refresh_retry(struct tevent_req *req)
if (state->sdap_op == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, "sdap_id_op_create() failed\n");
state->dp_error = DP_ERR_FATAL;
- state->error = EIO;
- return EIO;
+ return ENOMEM;
}
}
subreq = sdap_id_op_connect_send(state->sdap_op, state, &ret);
if (subreq == NULL) {
- DEBUG(SSSDBG_CRIT_FAILURE,
- "sdap_id_op_connect_send() failed: %d(%s)\n", ret, strerror(ret));
- talloc_zfree(state->sdap_op);
- state->dp_error = DP_ERR_FATAL;
- state->error = ret;
+ DEBUG(SSSDBG_CRIT_FAILURE, "sdap_id_op_connect_send() failed: "
+ "%d(%s)\n", ret, strerror(ret));
return ret;
}
@@ -235,16 +227,12 @@ static void sdap_sudo_refresh_connect_done(struct tevent_req *subreq)
ret = sdap_id_op_connect_recv(subreq, &dp_error);
talloc_zfree(subreq);
- if (dp_error == DP_ERR_OFFLINE) {
- talloc_zfree(state->sdap_op);
- state->dp_error = DP_ERR_OFFLINE;
- state->error = EAGAIN;
- tevent_req_done(req);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "SUDO LDAP connection failed "
+ "[%d]: %s\n", ret, strerror(ret));
+ state->dp_error = dp_error;
+ tevent_req_error(req, ret);
return;
- } else if (ret != EOK) {
- DEBUG(SSSDBG_CRIT_FAILURE,
- "SUDO LDAP connection failed - %s\n", strerror(ret));
- goto fail;
}
DEBUG(SSSDBG_TRACE_FUNC, "SUDO LDAP connection successful\n");
@@ -254,18 +242,14 @@ static void sdap_sudo_refresh_connect_done(struct tevent_req *subreq)
sdap_id_op_handle(state->sdap_op),
state->ldap_filter);
if (subreq == NULL) {
- ret = EFAULT;
- goto fail;
+ state->dp_error = DP_ERR_FATAL;
+ tevent_req_error(req, ENOMEM);
+ return;
}
tevent_req_set_callback(subreq, sdap_sudo_refresh_load_done, req);
return;
-
-fail:
- state->dp_error = DP_ERR_FATAL;
- state->error = ret;
- tevent_req_error(req, ret);
}
static struct tevent_req * sdap_sudo_load_sudoers_send(TALLOC_CTX *mem_ctx,
@@ -517,7 +501,6 @@ done:
}
}
- state->error = ret;
if (ret == EOK) {
state->dp_error = DP_ERR_OK;
tevent_req_done(req);