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>
(cherry picked from commit
202ee81e869f4b51e1f904ef6ac3fb0030edfede)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11032
}
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);