From cd749ef8bd271b1de0212e25c67f87283ba7582b Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Wed, 23 Sep 2009 15:47:05 +0200 Subject: s3:gencache: Make gencache_del() return success for expired entries This fixes nasty error messages from "net cache flush" --- source3/lib/gencache.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'source3/lib/gencache.c') 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; -- cgit