diff options
author | Martin Nagy <mnagy@redhat.com> | 2009-03-16 13:08:56 +0100 |
---|---|---|
committer | Martin Nagy <mnagy@redhat.com> | 2009-03-16 15:45:47 +0100 |
commit | eb28d6d9ffe5c18f51a7288f3d536087991c1158 (patch) | |
tree | b1a5f163161818949e355f3a71cfa9956b986e48 | |
parent | e5f852b66a5fc39216321bff98a7cf3ca398b7a8 (diff) | |
download | ldap_driver_testing-eb28d6d9ffe5c18f51a7288f3d536087991c1158.tar.gz ldap_driver_testing-eb28d6d9ffe5c18f51a7288f3d536087991c1158.tar.xz ldap_driver_testing-eb28d6d9ffe5c18f51a7288f3d536087991c1158.zip |
Add discard_from_cache().
This function will delete a named entry from cache, if it exists and if
caching is turned on.
-rw-r--r-- | cache.c | 19 | ||||
-rw-r--r-- | cache.h | 6 |
2 files changed, 25 insertions, 0 deletions
@@ -192,3 +192,22 @@ cached_ldap_rdatalist_get(isc_mem_t *mctx, ldap_cache_t *cache, cleanup: return result; } + +isc_result_t +discard_from_cache(ldap_cache_t *cache, dns_name_t *name) +{ + isc_result_t result; + + REQUIRE(cache != NULL); + REQUIRE(name != NULL); + + if (cache->rbt == NULL) + result = ISC_R_SUCCESS; + else + result = dns_rbt_deletename(cache->rbt, name, ISC_FALSE); + + if (result == ISC_R_NOTFOUND) + result = ISC_R_SUCCESS; + + return result; +} @@ -48,5 +48,11 @@ cached_ldap_rdatalist_get(isc_mem_t *mctx, ldap_cache_t *cache, ldap_db_t *ldap_db, dns_name_t *name, ldapdb_rdatalist_t *rdatalist); +/* + * Discard 'name' from the cache. If caching is not really turned on or 'name' + * is not cached, this function will still return ISC_R_SUCCESS. + */ +isc_result_t +discard_from_cache(ldap_cache_t *cache, dns_name_t *name); #endif /* !_LD_CACHE_H_ */ |