s3:gencache: fix logic in stabilization when deleting a record from stable cache
authorMichael Adam <obnox@samba.org>
Thu, 26 Jun 2014 14:37:17 +0000 (16:37 +0200)
committerVolker Lendecke <vl@samba.org>
Wed, 26 Nov 2014 15:43:04 +0000 (16:43 +0100)
Set state->written = true in the delete case
if and only if the record has really been deleted.

This does currently not seem to lead to an unneeded
write to the DB, since failure to delete the record
will cause the traverse and hence the transaction
to cancel. But I think this is clearer.

Signed-off-by: Michael Adam <obnox@samba.org>
Reviewed-by: Christof Schmitt <cs@samba.org>
source3/lib/gencache.c

index 5ee406b9050e3553818b5dce35170f055e2a0c34..c7646e3d14e74b095890ae7df7b4b10d55618fa7 100644 (file)
@@ -718,10 +718,10 @@ static int stabilize_fn(struct tdb_context *tdb, TDB_DATA key, TDB_DATA val,
        }
        if ((timeout < time(NULL)) || (val.dsize == 0)) {
                res = tdb_delete(cache, key);
-               if ((res != 0) && (tdb_error(cache) == TDB_ERR_NOEXIST)) {
-                       res = 0;
-               } else {
+               if (res == 0) {
                        state->written = true;
+               } else if (tdb_error(cache) == TDB_ERR_NOEXIST) {
+                       res = 0;
                }
        } else {
                res = tdb_store(cache, key, val, 0);