diff options
author | Volker Lendecke <vl@samba.org> | 2014-11-25 21:03:18 +0000 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2014-11-26 14:50:38 +0100 |
commit | ec0c9ad0994d35e22ecc50e552d14582c51622b1 (patch) | |
tree | 822ab923716331dd5635b1e0810d0b25be3ca980 /source3/lib/gencache.c | |
parent | d32b66b40c931fe8214faa2e1d40b34b86667d4c (diff) | |
download | samba-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.c | 22 |
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)) { |