summaryrefslogtreecommitdiffstats
path: root/src/responder/pam/pamsrv_cmd.c
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2010-03-11 23:03:47 -0500
committerStephen Gallagher <sgallagh@redhat.com>2010-04-12 09:22:15 -0400
commitd8d877a5fcde1defdd1a438df020e087339873a0 (patch)
treef385b1d75327ede87339b9d813a87920f9ca1231 /src/responder/pam/pamsrv_cmd.c
parent40bb1ddf0a3f69922466b2b99bcdaf7746fc81ba (diff)
downloadsssd-d8d877a5fcde1defdd1a438df020e087339873a0.tar.gz
sssd-d8d877a5fcde1defdd1a438df020e087339873a0.tar.xz
sssd-d8d877a5fcde1defdd1a438df020e087339873a0.zip
Remove remaining use of sysdb_transaction_send
Diffstat (limited to 'src/responder/pam/pamsrv_cmd.c')
-rw-r--r--src/responder/pam/pamsrv_cmd.c142
1 files changed, 9 insertions, 133 deletions
diff --git a/src/responder/pam/pamsrv_cmd.c b/src/responder/pam/pamsrv_cmd.c
index 77f29ec8c..eba78cceb 100644
--- a/src/responder/pam/pamsrv_cmd.c
+++ b/src/responder/pam/pamsrv_cmd.c
@@ -271,119 +271,8 @@ static int pam_parse_in_data(struct sss_names_ctx *snctx,
/*=Save-Last-Login-State===================================================*/
-struct set_last_login_state {
- struct tevent_context *ev;
- struct sysdb_ctx *dbctx;
-
- struct sss_domain_info *dom;
- const char *username;
- struct sysdb_attrs *attrs;
-
- struct sysdb_handle *handle;
-
- struct ldb_result *res;
-};
-
-static void set_last_login_trans_done(struct tevent_req *subreq);
-static void set_last_login_done(struct tevent_req *subreq);
-
-static struct tevent_req *set_last_login_send(TALLOC_CTX *memctx,
- struct tevent_context *ev,
- struct sysdb_ctx *dbctx,
- struct sss_domain_info *dom,
- const char *username,
- struct sysdb_attrs *attrs)
-{
- struct tevent_req *req, *subreq;
- struct set_last_login_state *state;
-
- req = tevent_req_create(memctx, &state, struct set_last_login_state);
- if (!req) {
- return NULL;
- }
-
- state->ev = ev;
- state->dbctx = dbctx;
- state->dom = dom;
- state->username = username;
- state->attrs = attrs;
- state->handle = NULL;
-
- subreq = sysdb_transaction_send(state, state->ev, state->dbctx);
- if (!subreq) {
- talloc_free(req);
- return NULL;
- }
- tevent_req_set_callback(subreq, set_last_login_trans_done, req);
-
- return req;
-}
-
-static void set_last_login_trans_done(struct tevent_req *subreq)
-{
- struct tevent_req *req = tevent_req_callback_data(subreq,
- struct tevent_req);
- struct set_last_login_state *state = tevent_req_data(req,
- struct set_last_login_state);
- int ret;
-
- ret = sysdb_transaction_recv(subreq, state, &state->handle);
- talloc_zfree(subreq);
- if (ret != EOK) {
- DEBUG(1, ("Unable to acquire sysdb transaction lock\n"));
- tevent_req_error(req, ret);
- return;
- }
-
- ret = sysdb_set_user_attr(state, sysdb_handle_get_ctx(state->handle),
- state->dom, state->username,
- state->attrs, SYSDB_MOD_REP);
- if (ret != EOK) {
- DEBUG(4, ("set_user_attr_callback, status [%d][%s]\n",
- ret, strerror(ret)));
- tevent_req_error(req, ret);
- return;
- }
-
- subreq = sysdb_transaction_commit_send(state, state->ev, state->handle);
- if (!subreq) {
- tevent_req_error(req, ENOMEM);
- return;
- }
- tevent_req_set_callback(subreq, set_last_login_done, req);
-}
-
-static void set_last_login_done(struct tevent_req *subreq)
-{
- struct tevent_req *req = tevent_req_callback_data(subreq,
- struct tevent_req);
- int ret;
-
- ret = sysdb_transaction_commit_recv(subreq);
- if (ret != EOK) {
- DEBUG(2, ("set_last_login failed.\n"));
- tevent_req_error(req, ret);
- return;
- }
-
- tevent_req_done(req);
-}
-
-static int set_last_login_recv(struct tevent_req *req)
-{
- TEVENT_REQ_RETURN_ON_ERROR(req);
-
- return EOK;
-}
-
-/*=========================================================================*/
-
-
-static void set_last_login_reply(struct tevent_req *req);
-
static errno_t set_last_login(struct pam_auth_req *preq)
{
- struct tevent_req *req;
struct sysdb_ctx *dbctx;
struct sysdb_attrs *attrs;
errno_t ret;
@@ -411,13 +300,17 @@ static errno_t set_last_login(struct pam_auth_req *preq)
goto fail;
}
- req = set_last_login_send(preq, preq->cctx->ev, dbctx,
- preq->domain, preq->pd->user, attrs);
- if (!req) {
- ret = ENOMEM;
+ ret = sysdb_set_user_attr(preq, dbctx,
+ preq->domain, preq->pd->user,
+ attrs, SYSDB_MOD_REP);
+ if (ret != EOK) {
+ DEBUG(2, ("set_last_login failed.\n"));
+ preq->pd->pam_status = PAM_SYSTEM_ERR;
goto fail;
+ } else {
+ preq->pd->last_auth_saved = true;
}
- tevent_req_set_callback(req, set_last_login_reply, preq);
+ preq->callback(preq);
return EOK;
@@ -425,22 +318,6 @@ fail:
return ret;
}
-static void set_last_login_reply(struct tevent_req *req)
-{
- struct pam_auth_req *preq = tevent_req_callback_data(req,
- struct pam_auth_req);
- int ret;
-
- ret = set_last_login_recv(req);
- if (ret != EOK) {
- preq->pd->pam_status = PAM_SYSTEM_ERR;
- } else {
- preq->pd->last_auth_saved = true;
- }
-
- preq->callback(preq);
-}
-
static void pam_reply_delay(struct tevent_context *ev, struct tevent_timer *te,
struct timeval tv, void *pvt)
{
@@ -566,7 +443,6 @@ static void pam_reply(struct pam_auth_req *preq)
if (ret != EOK) {
goto done;
}
-
return;
}