r25690: - only use a readonly traverse in ldb_search when not in a transaction. When...
[jra/samba/.git] / source4 / lib / ldb / ldb_tdb / ldb_tdb.c
index 3461f98d5f3f46d44dd5eda73b47a3baa20d37d9..949164a505eadb2da4c6c6bb718cbcd68bed079c 100644 (file)
@@ -907,6 +907,8 @@ static int ltdb_start_trans(struct ldb_module *module)
                return ltdb_err_map(tdb_error(ltdb->tdb));
        }
 
+       ltdb->in_transaction++;
+
        return LDB_SUCCESS;
 }
 
@@ -915,6 +917,8 @@ static int ltdb_end_trans(struct ldb_module *module)
        struct ltdb_private *ltdb =
                talloc_get_type(module->private_data, struct ltdb_private);
 
+       ltdb->in_transaction--;
+
        if (tdb_transaction_commit(ltdb->tdb) != 0) {
                return ltdb_err_map(tdb_error(ltdb->tdb));
        }
@@ -927,6 +931,8 @@ static int ltdb_del_trans(struct ldb_module *module)
        struct ltdb_private *ltdb =
                talloc_get_type(module->private_data, struct ltdb_private);
 
+       ltdb->in_transaction--;
+
        if (tdb_transaction_cancel(ltdb->tdb) != 0) {
                return ltdb_err_map(tdb_error(ltdb->tdb));
        }