summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2009-09-23 15:47:05 +0200
committerVolker Lendecke <vl@samba.org>2009-09-23 18:50:33 +0200
commitcd749ef8bd271b1de0212e25c67f87283ba7582b (patch)
tree9fea4e466c5b68dcc174ce0fdd604965081aa193 /source3
parentaece84f22de9aceb150a04b68dea18abcff968b2 (diff)
downloadsamba-cd749ef8bd271b1de0212e25c67f87283ba7582b.tar.gz
samba-cd749ef8bd271b1de0212e25c67f87283ba7582b.tar.bz2
samba-cd749ef8bd271b1de0212e25c67f87283ba7582b.zip
s3:gencache: Make gencache_del() return success for expired entries
This fixes nasty error messages from "net cache flush"
Diffstat (limited to 'source3')
-rw-r--r--source3/lib/gencache.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/source3/lib/gencache.c b/source3/lib/gencache.c
index 2f603dbb2d..d3631b96ee 100644
--- a/source3/lib/gencache.c
+++ b/source3/lib/gencache.c
@@ -208,9 +208,9 @@ done:
bool gencache_del(const char *keystr)
{
- bool exists;
+ bool exists, was_expired;
bool ret = false;
- char *value;
+ DATA_BLOB value;
if (keystr == NULL) {
return false;
@@ -226,9 +226,18 @@ bool gencache_del(const char *keystr)
* element.
*/
- exists = gencache_get(keystr, &value, NULL);
+ exists = gencache_get_data_blob(keystr, &value, NULL, &was_expired);
+
+ if (!exists && was_expired) {
+ /*
+ * gencache_get_data_blob has implicitly deleted this
+ * entry, so we have to return success here.
+ */
+ return true;
+ }
+
if (exists) {
- SAFE_FREE(value);
+ data_blob_free(&value);
ret = gencache_set(keystr, "", 0);
}
return ret;