diff options
author | Michal Zidek <mzidek@redhat.com> | 2012-08-15 10:56:21 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2012-09-04 13:56:32 +0200 |
commit | 3a59cbd0b7b9c5dd3c62ac1679876070c264d80f (patch) | |
tree | 0f5440da7b11b227e638a33e2d3600622c41e6c7 /src/db/sysdb_autofs.c | |
parent | 28943451c1b0f01845266b0f13cc3772c2b1d66f (diff) | |
download | sssd-3a59cbd0b7b9c5dd3c62ac1679876070c264d80f.tar.gz sssd-3a59cbd0b7b9c5dd3c62ac1679876070c264d80f.tar.bz2 sssd-3a59cbd0b7b9c5dd3c62ac1679876070c264d80f.zip |
Unify usage of sysdb transactions (part 2).
Diffstat (limited to 'src/db/sysdb_autofs.c')
-rw-r--r-- | src/db/sysdb_autofs.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/db/sysdb_autofs.c b/src/db/sysdb_autofs.c index eff4e296..df5f3398 100644 --- a/src/db/sysdb_autofs.c +++ b/src/db/sysdb_autofs.c @@ -345,8 +345,9 @@ sysdb_autofs_map_update_members(struct sysdb_ctx *sysdb, const char *const *add_entries, const char *const *del_entries) { - errno_t ret; + errno_t ret, sret; int i; + bool in_transaction = false; TALLOC_CTX *tmp_ctx = talloc_new(NULL); if(!tmp_ctx) { @@ -360,6 +361,8 @@ sysdb_autofs_map_update_members(struct sysdb_ctx *sysdb, goto done; } + in_transaction = true; + if (add_entries) { /* Add the all te add_entries to the map */ for (i = 0; add_entries[i]; i++) { @@ -389,9 +392,20 @@ sysdb_autofs_map_update_members(struct sysdb_ctx *sysdb, } ret = sysdb_transaction_commit(sysdb); -done: if (ret != EOK) { - sysdb_transaction_cancel(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, ("Could not cancel transaction\n")); + } } talloc_free(tmp_ctx); return ret; |