]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Add handle support to consensus_cache_entry_t
authorNick Mathewson <nickm@torproject.org>
Tue, 11 Apr 2017 19:47:21 +0000 (15:47 -0400)
committerNick Mathewson <nickm@torproject.org>
Mon, 24 Apr 2017 14:59:25 +0000 (10:59 -0400)
This will allow us to have weak references to cache entries.

src/or/conscache.c
src/or/conscache.h

index a186163b6c45cba1db52cdda074ef842c7513f84..9dedb430851d234f9ef90c81b54997eff4e24444 100644 (file)
@@ -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.
index 94d7f15457b5ded2ce2485fcc4f5d762b7a1f8bb..c8cda60e537dcf4847700e23239084845f241684 100644 (file)
@@ -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);