summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-04-11 15:47:21 -0400
committerNick Mathewson <nickm@torproject.org>2017-04-24 10:59:25 -0400
commit82bb8afb6067005f52f656b658ca1a1a6501b22d (patch)
tree9ffaf8d959c6070e9322edba8d09e610627d9945 /src
parent5726fec9c22c53c77f67b26782de1803ff6cca49 (diff)
downloadtor-82bb8afb6067005f52f656b658ca1a1a6501b22d.tar.gz
tor-82bb8afb6067005f52f656b658ca1a1a6501b22d.zip
Add handle support to consensus_cache_entry_t
This will allow us to have weak references to cache entries.
Diffstat (limited to 'src')
-rw-r--r--src/or/conscache.c4
-rw-r--r--src/or/conscache.h4
2 files changed, 8 insertions, 0 deletions
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 <b>ent</b> 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);