From 21d485184df986e1a123f70c689517386e51a5ce Mon Sep 17 00:00:00 2001 From: Michal Zidek Date: Thu, 16 Aug 2012 18:48:53 +0200 Subject: Unify usage of sysdb transactions Removing bad examples of usage of sysdb_transaction_start/commit/end functions and making it more consistent (all files except of src/db/sysdb_*.c). --- src/providers/krb5/krb5_auth.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/providers/krb5/krb5_auth.c') diff --git a/src/providers/krb5/krb5_auth.c b/src/providers/krb5/krb5_auth.c index 1da1d025..c3a9e62d 100644 --- a/src/providers/krb5/krb5_auth.c +++ b/src/providers/krb5/krb5_auth.c @@ -121,6 +121,8 @@ static int krb5_mod_ccname(TALLOC_CTX *mem_ctx, TALLOC_CTX *tmpctx; struct sysdb_attrs *attrs; int ret; + errno_t sret; + bool in_transaction = false; if (name == NULL || ccname == NULL) { DEBUG(1, ("Missing user or ccache name.\n")); @@ -154,9 +156,11 @@ static int krb5_mod_ccname(TALLOC_CTX *mem_ctx, ret = sysdb_transaction_start(sysdb); if (ret != EOK) { - DEBUG(6, ("Error %d starting transaction (%s)\n", ret, strerror(ret))); + DEBUG(SSSDBG_CRIT_FAILURE, + ("Error %d starting transaction (%s)\n", ret, strerror(ret))); goto done; } + in_transaction = true; ret = sysdb_set_user_attr(sysdb, name, attrs, mod_op); if (ret != EOK) { @@ -167,10 +171,18 @@ static int krb5_mod_ccname(TALLOC_CTX *mem_ctx, ret = sysdb_transaction_commit(sysdb); if (ret != EOK) { - DEBUG(1, ("Failed to commit transaction!\n")); + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to commit transaction!\n")); + goto done; } + in_transaction = false; done: + if (in_transaction) { + sret = sysdb_transaction_cancel(sysdb); + if (sret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to cancel transaction\n")); + } + } talloc_zfree(tmpctx); return ret; } -- cgit