commit 82bb8afb6067005f52f656b658ca1a1a6501b22d Author: Nick Mathewson nickm@torproject.org Date: Tue Apr 11 15:47:21 2017 -0400
Add handle support to consensus_cache_entry_t
This will allow us to have weak references to cache entries. --- src/or/conscache.c | 4 ++++ src/or/conscache.h | 4 ++++ 2 files changed, 8 insertions(+)
diff --git a/src/or/conscache.c b/src/or/conscache.c index a186163..9dedb43 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 <b>ent</b> is mapped into memory. diff --git a/src/or/conscache.h b/src/or/conscache.h index 94d7f15..c8cda60 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);