From: Nick Mathewson Date: Tue, 11 Apr 2017 19:47:21 +0000 (-0400) Subject: Add handle support to consensus_cache_entry_t X-Git-Tag: tor-0.3.1.1-alpha~152^2~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=82bb8afb6067005f52f656b658ca1a1a6501b22d;p=thirdparty%2Ftor.git Add handle support to consensus_cache_entry_t This will allow us to have weak references to cache entries. --- diff --git a/src/or/conscache.c b/src/or/conscache.c index a186163b6c..9dedb43085 100644 --- a/src/or/conscache.c +++ b/src/or/conscache.c @@ -16,6 +16,7 @@ */ struct consensus_cache_entry_t { uint32_t magic; /**< Must be set to CCE_MAGIC */ + HANDLE_ENTRY(consensus_cache_entry, consensus_cache_entry_t); int32_t refcnt; /**< Reference count. */ unsigned can_remove : 1; /**< If true, we want to delete this file. */ /** If true, we intend to unmap this file as soon as we're done with it. */ @@ -305,6 +306,7 @@ consensus_cache_entry_decref(consensus_cache_entry_t *ent) } tor_free(ent->fname); config_free_lines(ent->labels); + consensus_cache_entry_handles_clear(ent); memwipe(ent, 0, sizeof(consensus_cache_entry_t)); tor_free(ent); } @@ -490,6 +492,8 @@ consensus_cache_entry_unmap(consensus_cache_entry_t *ent) ent->unused_since = TIME_MAX; } +HANDLE_IMPL(consensus_cache_entry, consensus_cache_entry_t, ) + #ifdef TOR_UNIT_TESTS /** * Testing only: Return true iff ent is mapped into memory. diff --git a/src/or/conscache.h b/src/or/conscache.h index 94d7f15457..c8cda60e53 100644 --- a/src/or/conscache.h +++ b/src/or/conscache.h @@ -4,9 +4,13 @@ #ifndef TOR_CONSCACHE_H #define TOR_CONSCACHE_H +#include "handles.h" + typedef struct consensus_cache_entry_t consensus_cache_entry_t; typedef struct consensus_cache_t consensus_cache_t; +HANDLE_DECL(consensus_cache_entry, consensus_cache_entry_t, ) + consensus_cache_t *consensus_cache_open(const char *subdir, int max_entries); void consensus_cache_free(consensus_cache_t *cache); void consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff);