From 202ee81e869f4b51e1f904ef6ac3fb0030edfede Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Thu, 26 Jun 2014 16:37:17 +0200 Subject: s3:gencache: fix logic in stabilization when deleting a record from stable cache 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 Reviewed-by: Christof Schmitt --- source3/lib/gencache.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source3/lib/gencache.c') diff --git a/source3/lib/gencache.c b/source3/lib/gencache.c index 5ee406b905..c7646e3d14 100644 --- a/source3/lib/gencache.c +++ b/source3/lib/gencache.c @@ -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); -- cgit