summaryrefslogtreecommitdiffstats
path: root/source3/lib/gencache.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-11-25 21:03:18 +0000
committerAndreas Schneider <asn@cryptomilk.org>2014-11-26 14:50:38 +0100
commitec0c9ad0994d35e22ecc50e552d14582c51622b1 (patch)
tree822ab923716331dd5635b1e0810d0b25be3ca980 /source3/lib/gencache.c
parentd32b66b40c931fe8214faa2e1d40b34b86667d4c (diff)
downloadsamba-ec0c9ad0994d35e22ecc50e552d14582c51622b1.tar.gz
samba-ec0c9ad0994d35e22ecc50e552d14582c51622b1.tar.xz
samba-ec0c9ad0994d35e22ecc50e552d14582c51622b1.zip
lib: Use tdb_parse_record in gencache_set
Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org> Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org> Autobuild-Date(master): Wed Nov 26 14:50:38 CET 2014 on sn-devel-104
Diffstat (limited to 'source3/lib/gencache.c')
-rw-r--r--source3/lib/gencache.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/source3/lib/gencache.c b/source3/lib/gencache.c
index 3192b454b8..5ee406b905 100644
--- a/source3/lib/gencache.c
+++ b/source3/lib/gencache.c
@@ -251,6 +251,17 @@ static bool gencache_have_val(const char *keystr, const DATA_BLOB *data,
return state.gotit;
}
+static int last_stabilize_parser(TDB_DATA key, TDB_DATA data,
+ void *private_data)
+{
+ time_t *last_stabilize = private_data;
+
+ if ((data.dsize != 0) && (data.dptr[data.dsize-1] == '\0')) {
+ *last_stabilize = atoi((char *)data.dptr);
+ }
+ return 0;
+}
+
/**
* Set an entry in the cache file. If there's no such
* one, then add it.
@@ -267,7 +278,6 @@ bool gencache_set_data_blob(const char *keystr, const DATA_BLOB *blob,
time_t timeout)
{
int ret;
- TDB_DATA databuf;
char* val;
time_t last_stabilize;
static int writecount;
@@ -337,12 +347,10 @@ bool gencache_set_data_blob(const char *keystr, const DATA_BLOB *blob,
*/
last_stabilize = 0;
- databuf = tdb_fetch_compat(cache_notrans, last_stabilize_key());
- if ((databuf.dptr != NULL)
- && (databuf.dptr[databuf.dsize-1] == '\0')) {
- last_stabilize = atoi((char *)databuf.dptr);
- SAFE_FREE(databuf.dptr);
- }
+
+ tdb_parse_record(cache_notrans, last_stabilize_key(),
+ last_stabilize_parser, &last_stabilize);
+
if ((last_stabilize
+ lp_parm_int(-1, "gencache", "stabilize_interval", 300))
< time(NULL)) {