diff options
author | Michal Zidek <mzidek@redhat.com> | 2012-08-16 18:48:53 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2012-08-23 18:09:18 +0200 |
commit | 21d485184df986e1a123f70c689517386e51a5ce (patch) | |
tree | 7b2165fdc4dadcc632d402866b704df04ede852f /src/providers/ipa | |
parent | 0051296f67bd7d8e2e3094638ddff4e641324d04 (diff) | |
download | sssd-21d485184df986e1a123f70c689517386e51a5ce.tar.gz sssd-21d485184df986e1a123f70c689517386e51a5ce.tar.xz sssd-21d485184df986e1a123f70c689517386e51a5ce.zip |
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).
Diffstat (limited to 'src/providers/ipa')
-rw-r--r-- | src/providers/ipa/ipa_access.c | 3 | ||||
-rw-r--r-- | src/providers/ipa/ipa_hbac_common.c | 10 | ||||
-rw-r--r-- | src/providers/ipa/ipa_selinux.c | 5 | ||||
-rw-r--r-- | src/providers/ipa/ipa_selinux_common.c | 12 |
4 files changed, 25 insertions, 5 deletions
diff --git a/src/providers/ipa/ipa_access.c b/src/providers/ipa/ipa_access.c index 571085e5a..d3fb158f0 100644 --- a/src/providers/ipa/ipa_access.c +++ b/src/providers/ipa/ipa_access.c @@ -572,9 +572,10 @@ static void hbac_sysdb_save(struct tevent_req *req) ret = sysdb_transaction_commit(sysdb); if (ret != EOK) { - DEBUG(0, ("Failed to commit transaction\n")); + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to commit transaction\n")); goto fail; } + in_transaction = false; /* We don't need the rule data any longer, * the rest of the processing relies on diff --git a/src/providers/ipa/ipa_hbac_common.c b/src/providers/ipa/ipa_hbac_common.c index af0000cff..341b56223 100644 --- a/src/providers/ipa/ipa_hbac_common.c +++ b/src/providers/ipa/ipa_hbac_common.c @@ -111,7 +111,10 @@ ipa_hbac_sysdb_save(struct sysdb_ctx *sysdb, struct sss_domain_info *domain, /* Save the entries and groups to the cache */ ret = sysdb_transaction_start(sysdb); - if (ret != EOK) return ret; + if (ret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to start transaction\n")); + goto done; + }; in_transaction = true; /* First, save the specific entries */ @@ -143,7 +146,10 @@ ipa_hbac_sysdb_save(struct sysdb_ctx *sysdb, struct sss_domain_info *domain, } ret = sysdb_transaction_commit(sysdb); - if (ret != EOK) goto done; + if (ret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to commit transaction\n")); + goto done; + } in_transaction = false; done: diff --git a/src/providers/ipa/ipa_selinux.c b/src/providers/ipa/ipa_selinux.c index b5a84269e..36a2bfb4a 100644 --- a/src/providers/ipa/ipa_selinux.c +++ b/src/providers/ipa/ipa_selinux.c @@ -123,7 +123,10 @@ static void ipa_selinux_handler_done(struct tevent_req *req) } ret = sysdb_transaction_start(sysdb); - if (ret != EOK) goto fail; + if (ret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to start transaction\n")); + goto fail; + } in_transaction = true; ret = sysdb_delete_usermaps(breq->sysdb); diff --git a/src/providers/ipa/ipa_selinux_common.c b/src/providers/ipa/ipa_selinux_common.c index a01e0b6cb..45794388f 100644 --- a/src/providers/ipa/ipa_selinux_common.c +++ b/src/providers/ipa/ipa_selinux_common.c @@ -32,12 +32,16 @@ errno_t ipa_save_user_maps(struct sysdb_ctx *sysdb, struct sysdb_attrs **maps) { errno_t ret; + errno_t sret; + bool in_transaction = false; int i; ret = sysdb_transaction_start(sysdb); if (ret) { + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to start transaction\n")); goto done; } + in_transaction = true; for (i = 0; i < map_count; i++) { ret = sysdb_store_selinux_usermap(sysdb, maps[i]); @@ -54,9 +58,15 @@ errno_t ipa_save_user_maps(struct sysdb_ctx *sysdb, DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to commit transaction!\n")); goto done; } - + in_transaction = false; ret = EOK; done: + if (in_transaction) { + sret = sysdb_transaction_cancel(sysdb); + if (sret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to cancel transaction")); + } + } return ret; } |