summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2011-04-19 12:06:05 +0930
committerRusty Russell <rusty@rustcorp.com.au>2011-04-19 12:06:05 +0930
commit7deeacae2bab03d5e2ea2642f028a4011ce3bec3 (patch)
treefc251e9d3047c390342a5cff3931fe32b9374830
parent3ccfe7cb7be80cc6fa5b8fc437af72168515b892 (diff)
downloadsamba-7deeacae2bab03d5e2ea2642f028a4011ce3bec3.tar.gz
samba-7deeacae2bab03d5e2ea2642f028a4011ce3bec3.tar.xz
samba-7deeacae2bab03d5e2ea2642f028a4011ce3bec3.zip
gencache: don't use CLEAR_IF_FIRST as fallback.
CLEAR_IF_FIRST only works if *all* openers use that flag. So just truncate the file: it's racy, but that's what we're doing anyway. We'd really need a TDB_OPENCHECK_OR_CLEAR flag to do this properly (or in TDB2, a open hook at the right point). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-rw-r--r--source3/lib/gencache.c10
-rw-r--r--source3/libsmb/samlogon_cache.c13
2 files changed, 6 insertions, 17 deletions
diff --git a/source3/lib/gencache.c b/source3/lib/gencache.c
index 7a86063de5..8d4861a176 100644
--- a/source3/lib/gencache.c
+++ b/source3/lib/gencache.c
@@ -81,14 +81,10 @@ again:
return false;
}
first_try = false;
- DEBUG(0, ("gencache_init: tdb_check(%s) failed - retry after CLEAR_IF_FIRST\n",
+ DEBUG(0, ("gencache_init: tdb_check(%s) failed - retry after truncate\n",
cache_fname));
- cache = tdb_open_log(cache_fname, 0, TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH, open_flags, 0644);
- if (cache) {
- tdb_close(cache);
- cache = NULL;
- goto again;
- }
+ truncate(cache_fname, 0);
+ goto again;
}
}
diff --git a/source3/libsmb/samlogon_cache.c b/source3/libsmb/samlogon_cache.c
index 590c950a9c..01a5282751 100644
--- a/source3/libsmb/samlogon_cache.c
+++ b/source3/libsmb/samlogon_cache.c
@@ -71,16 +71,9 @@ clear:
}
first_try = false;
- DEBUG(0,("retry after CLEAR_IF_FIRST for '%s'\n", path));
- tdb = tdb_open_log(path, 0, TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH,
- O_RDWR | O_CREAT, 0600);
- if (tdb) {
- tdb_close(tdb);
- goto again;
- }
- DEBUG(0,("tdb_open_log(%s) with CLEAR_IF_FIRST - failed\n", path));
-
- return false;
+ DEBUG(0,("retry after truncate for '%s'\n", path));
+ truncate(path, 0);
+ goto again;
}