mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
Convert remaining function (mostly static) to new free style
This commit is contained in:
parent
17dcce3fe1
commit
fa0d24286b
34 changed files with 227 additions and 104 deletions
|
@ -1905,9 +1905,12 @@ tor_passwd_dup(const struct passwd *pw)
|
||||||
return new_pw;
|
return new_pw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define tor_passwd_free(pw) \
|
||||||
|
FREE_AND_NULL(struct passwd, tor_passwd_free_, (pw))
|
||||||
|
|
||||||
/** Helper: free one of our cached 'struct passwd' values. */
|
/** Helper: free one of our cached 'struct passwd' values. */
|
||||||
static void
|
static void
|
||||||
tor_passwd_free(struct passwd *pw)
|
tor_passwd_free_(struct passwd *pw)
|
||||||
{
|
{
|
||||||
if (!pw)
|
if (!pw)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1163,19 +1163,26 @@ HT_GENERATE2(digest256map_impl, digest256map_entry_t, node,
|
||||||
digest256map_entry_hash,
|
digest256map_entry_hash,
|
||||||
digest256map_entries_eq, 0.6, tor_reallocarray_, tor_free_)
|
digest256map_entries_eq, 0.6, tor_reallocarray_, tor_free_)
|
||||||
|
|
||||||
|
#define strmap_entry_free(ent) \
|
||||||
|
FREE_AND_NULL(strmap_entry_t, strmap_entry_free_, (ent))
|
||||||
|
#define digestmap_entry_free(ent) \
|
||||||
|
FREE_AND_NULL(digestmap_entry_t, digestmap_entry_free_, (ent))
|
||||||
|
#define digest256map_entry_free(ent) \
|
||||||
|
FREE_AND_NULL(digest256map_entry_t, digest256map_entry_free_, (ent))
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
strmap_entry_free(strmap_entry_t *ent)
|
strmap_entry_free_(strmap_entry_t *ent)
|
||||||
{
|
{
|
||||||
tor_free(ent->key);
|
tor_free(ent->key);
|
||||||
tor_free(ent);
|
tor_free(ent);
|
||||||
}
|
}
|
||||||
static inline void
|
static inline void
|
||||||
digestmap_entry_free(digestmap_entry_t *ent)
|
digestmap_entry_free_(digestmap_entry_t *ent)
|
||||||
{
|
{
|
||||||
tor_free(ent);
|
tor_free(ent);
|
||||||
}
|
}
|
||||||
static inline void
|
static inline void
|
||||||
digest256map_entry_free(digest256map_entry_t *ent)
|
digest256map_entry_free_(digest256map_entry_t *ent)
|
||||||
{
|
{
|
||||||
tor_free(ent);
|
tor_free(ent);
|
||||||
}
|
}
|
||||||
|
|
|
@ -387,9 +387,12 @@ pending_log_message_new(int severity, log_domain_mask_t domain,
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define pending_log_message_free(msg) \
|
||||||
|
FREE_AND_NULL(pending_log_message_t, pending_log_message_free_, (msg))
|
||||||
|
|
||||||
/** Release all storage held by <b>msg</b>. */
|
/** Release all storage held by <b>msg</b>. */
|
||||||
static void
|
static void
|
||||||
pending_log_message_free(pending_log_message_t *msg)
|
pending_log_message_free_(pending_log_message_t *msg)
|
||||||
{
|
{
|
||||||
if (!msg)
|
if (!msg)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1446,8 +1446,12 @@ cached_getaddrinfo_items_eq(const cached_getaddrinfo_item_t *a,
|
||||||
return (a->family == b->family) && 0 == strcmp(a->name, b->name);
|
return (a->family == b->family) && 0 == strcmp(a->name, b->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define cached_getaddrinfo_item_free(item) \
|
||||||
|
FREE_AND_NULL(cached_getaddrinfo_item_t, \
|
||||||
|
cached_getaddrinfo_item_free_, (item))
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cached_getaddrinfo_item_free(cached_getaddrinfo_item_t *item)
|
cached_getaddrinfo_item_free_(cached_getaddrinfo_item_t *item)
|
||||||
{
|
{
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -148,12 +148,15 @@ workqueue_entry_new(workqueue_reply_t (*fn)(void*, void*),
|
||||||
return ent;
|
return ent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define workqueue_entry_free(ent) \
|
||||||
|
FREE_AND_NULL(workqueue_entry_t, workqueue_entry_free_, (ent))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Release all storage held in <b>ent</b>. Call only when <b>ent</b> is not on
|
* Release all storage held in <b>ent</b>. Call only when <b>ent</b> is not on
|
||||||
* any queue.
|
* any queue.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
workqueue_entry_free(workqueue_entry_t *ent)
|
workqueue_entry_free_(workqueue_entry_t *ent)
|
||||||
{
|
{
|
||||||
if (!ent)
|
if (!ent)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -90,34 +90,47 @@ addressmap_init(void)
|
||||||
virtaddress_reversemap = strmap_new();
|
virtaddress_reversemap = strmap_new();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define addressmap_ent_free(ent) \
|
||||||
|
FREE_AND_NULL(addressmap_entry_t, addressmap_ent_free_, (ent))
|
||||||
|
|
||||||
/** Free the memory associated with the addressmap entry <b>_ent</b>. */
|
/** Free the memory associated with the addressmap entry <b>_ent</b>. */
|
||||||
static void
|
static void
|
||||||
addressmap_ent_free(void *_ent)
|
addressmap_ent_free_(addressmap_entry_t *ent)
|
||||||
{
|
{
|
||||||
addressmap_entry_t *ent;
|
if (!ent)
|
||||||
if (!_ent)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ent = _ent;
|
|
||||||
tor_free(ent->new_address);
|
tor_free(ent->new_address);
|
||||||
tor_free(ent);
|
tor_free(ent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
addressmap_ent_free_void(void *ent)
|
||||||
|
{
|
||||||
|
addressmap_ent_free_(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define addressmap_virtaddress_ent_free(ent) \
|
||||||
|
FREE_AND_NULL(virtaddress_entry_t, addressmap_virtaddress_ent_free_, (ent))
|
||||||
|
|
||||||
/** Free storage held by a virtaddress_entry_t* entry in <b>_ent</b>. */
|
/** Free storage held by a virtaddress_entry_t* entry in <b>_ent</b>. */
|
||||||
static void
|
static void
|
||||||
addressmap_virtaddress_ent_free(void *_ent)
|
addressmap_virtaddress_ent_free_(virtaddress_entry_t *ent)
|
||||||
{
|
{
|
||||||
virtaddress_entry_t *ent;
|
if (!ent)
|
||||||
if (!_ent)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ent = _ent;
|
|
||||||
tor_free(ent->ipv4_address);
|
tor_free(ent->ipv4_address);
|
||||||
tor_free(ent->ipv6_address);
|
tor_free(ent->ipv6_address);
|
||||||
tor_free(ent->hostname_address);
|
tor_free(ent->hostname_address);
|
||||||
tor_free(ent);
|
tor_free(ent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
addressmap_virtaddress_ent_free_void(void *ent)
|
||||||
|
{
|
||||||
|
addressmap_virtaddress_ent_free_(ent);
|
||||||
|
}
|
||||||
|
|
||||||
/** Remove <b>address</b> (which must map to <b>ent</b>) from the
|
/** Remove <b>address</b> (which must map to <b>ent</b>) from the
|
||||||
* virtual address map. */
|
* virtual address map. */
|
||||||
static void
|
static void
|
||||||
|
@ -311,10 +324,10 @@ addressmap_clean(time_t now)
|
||||||
void
|
void
|
||||||
addressmap_free_all(void)
|
addressmap_free_all(void)
|
||||||
{
|
{
|
||||||
strmap_free(addressmap, addressmap_ent_free);
|
strmap_free(addressmap, addressmap_ent_free_void);
|
||||||
addressmap = NULL;
|
addressmap = NULL;
|
||||||
|
|
||||||
strmap_free(virtaddress_reversemap, addressmap_virtaddress_ent_free);
|
strmap_free(virtaddress_reversemap, addressmap_virtaddress_ent_free_void);
|
||||||
virtaddress_reversemap = NULL;
|
virtaddress_reversemap = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,10 @@ struct bridge_info_t {
|
||||||
smartlist_t *socks_args;
|
smartlist_t *socks_args;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void bridge_free(bridge_info_t *bridge);
|
#define bridge_free(bridge) \
|
||||||
|
FREE_AND_NULL(bridge_info_t, bridge_free_, (bridge))
|
||||||
|
|
||||||
|
static void bridge_free_(bridge_info_t *bridge);
|
||||||
static void rewrite_node_address_for_bridge(const bridge_info_t *bridge,
|
static void rewrite_node_address_for_bridge(const bridge_info_t *bridge,
|
||||||
node_t *node);
|
node_t *node);
|
||||||
|
|
||||||
|
@ -101,7 +104,7 @@ clear_bridge_list(void)
|
||||||
|
|
||||||
/** Free the bridge <b>bridge</b>. */
|
/** Free the bridge <b>bridge</b>. */
|
||||||
static void
|
static void
|
||||||
bridge_free(bridge_info_t *bridge)
|
bridge_free_(bridge_info_t *bridge)
|
||||||
{
|
{
|
||||||
if (!bridge)
|
if (!bridge)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -226,12 +226,11 @@ static void channel_remove_from_digest_map(channel_t *chan);
|
||||||
static ssize_t
|
static ssize_t
|
||||||
channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
|
channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
|
||||||
ssize_t num_cells);
|
ssize_t num_cells);
|
||||||
static void channel_force_free(channel_t *chan);
|
static void channel_force_xfree(channel_t *chan);
|
||||||
static void
|
static void channel_free_list(smartlist_t *channels, int mark_for_close);
|
||||||
channel_free_list(smartlist_t *channels, int mark_for_close);
|
static void channel_listener_free_list(smartlist_t *channels,
|
||||||
static void
|
int mark_for_close);
|
||||||
channel_listener_free_list(smartlist_t *channels, int mark_for_close);
|
static void channel_listener_force_xfree(channel_listener_t *chan_l);
|
||||||
static void channel_listener_force_free(channel_listener_t *chan_l);
|
|
||||||
static size_t channel_get_cell_queue_entry_size(channel_t *chan,
|
static size_t channel_get_cell_queue_entry_size(channel_t *chan,
|
||||||
cell_queue_entry_t *q);
|
cell_queue_entry_t *q);
|
||||||
static void
|
static void
|
||||||
|
@ -1068,7 +1067,7 @@ channel_listener_free_(channel_listener_t *chan_l)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
channel_force_free(channel_t *chan)
|
channel_force_xfree(channel_t *chan)
|
||||||
{
|
{
|
||||||
cell_queue_entry_t *cell, *cell_tmp;
|
cell_queue_entry_t *cell, *cell_tmp;
|
||||||
tor_assert(chan);
|
tor_assert(chan);
|
||||||
|
@ -1106,13 +1105,13 @@ channel_force_free(channel_t *chan)
|
||||||
|
|
||||||
/* We might still have a cell queue; kill it */
|
/* We might still have a cell queue; kill it */
|
||||||
TOR_SIMPLEQ_FOREACH_SAFE(cell, &chan->incoming_queue, next, cell_tmp) {
|
TOR_SIMPLEQ_FOREACH_SAFE(cell, &chan->incoming_queue, next, cell_tmp) {
|
||||||
cell_queue_entry_free(cell, 0);
|
cell_queue_entry_xfree(cell, 0);
|
||||||
}
|
}
|
||||||
TOR_SIMPLEQ_INIT(&chan->incoming_queue);
|
TOR_SIMPLEQ_INIT(&chan->incoming_queue);
|
||||||
|
|
||||||
/* Outgoing cell queue is similar, but we can have to free packed cells */
|
/* Outgoing cell queue is similar, but we can have to free packed cells */
|
||||||
TOR_SIMPLEQ_FOREACH_SAFE(cell, &chan->outgoing_queue, next, cell_tmp) {
|
TOR_SIMPLEQ_FOREACH_SAFE(cell, &chan->outgoing_queue, next, cell_tmp) {
|
||||||
cell_queue_entry_free(cell, 0);
|
cell_queue_entry_xfree(cell, 0);
|
||||||
}
|
}
|
||||||
TOR_SIMPLEQ_INIT(&chan->outgoing_queue);
|
TOR_SIMPLEQ_INIT(&chan->outgoing_queue);
|
||||||
|
|
||||||
|
@ -1126,7 +1125,7 @@ channel_force_free(channel_t *chan)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
channel_listener_force_free(channel_listener_t *chan_l)
|
channel_listener_force_xfree(channel_listener_t *chan_l)
|
||||||
{
|
{
|
||||||
tor_assert(chan_l);
|
tor_assert(chan_l);
|
||||||
|
|
||||||
|
@ -1755,7 +1754,7 @@ cell_queue_entry_dup(cell_queue_entry_t *q)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
STATIC void
|
STATIC void
|
||||||
cell_queue_entry_free(cell_queue_entry_t *q, int handed_off)
|
cell_queue_entry_xfree(cell_queue_entry_t *q, int handed_off)
|
||||||
{
|
{
|
||||||
if (!q) return;
|
if (!q) return;
|
||||||
|
|
||||||
|
@ -2563,7 +2562,7 @@ channel_flush_some_cells_from_outgoing_queue(channel_t *chan,
|
||||||
/* Update the channel's queue size too */
|
/* Update the channel's queue size too */
|
||||||
chan->bytes_in_queue -= cell_size;
|
chan->bytes_in_queue -= cell_size;
|
||||||
/* Finally, free q */
|
/* Finally, free q */
|
||||||
cell_queue_entry_free(q, handed_off);
|
cell_queue_entry_xfree(q, handed_off);
|
||||||
q = NULL;
|
q = NULL;
|
||||||
} else {
|
} else {
|
||||||
/* No cell removed from list, so we can't go on any further */
|
/* No cell removed from list, so we can't go on any further */
|
||||||
|
@ -3297,7 +3296,7 @@ channel_free_list(smartlist_t *channels, int mark_for_close)
|
||||||
if (!CHANNEL_CONDEMNED(curr)) {
|
if (!CHANNEL_CONDEMNED(curr)) {
|
||||||
channel_mark_for_close(curr);
|
channel_mark_for_close(curr);
|
||||||
}
|
}
|
||||||
channel_force_free(curr);
|
channel_force_xfree(curr);
|
||||||
} else channel_free(curr);
|
} else channel_free(curr);
|
||||||
} SMARTLIST_FOREACH_END(curr);
|
} SMARTLIST_FOREACH_END(curr);
|
||||||
}
|
}
|
||||||
|
@ -3326,7 +3325,7 @@ channel_listener_free_list(smartlist_t *listeners, int mark_for_close)
|
||||||
curr->state == CHANNEL_LISTENER_STATE_ERROR)) {
|
curr->state == CHANNEL_LISTENER_STATE_ERROR)) {
|
||||||
channel_listener_mark_for_close(curr);
|
channel_listener_mark_for_close(curr);
|
||||||
}
|
}
|
||||||
channel_listener_force_free(curr);
|
channel_listener_force_xfree(curr);
|
||||||
} else channel_listener_free(curr);
|
} else channel_listener_free(curr);
|
||||||
} SMARTLIST_FOREACH_END(curr);
|
} SMARTLIST_FOREACH_END(curr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -483,7 +483,7 @@ struct cell_queue_entry_s {
|
||||||
/* Cell queue functions for benefit of test suite */
|
/* Cell queue functions for benefit of test suite */
|
||||||
STATIC int chan_cell_queue_len(const chan_cell_queue_t *queue);
|
STATIC int chan_cell_queue_len(const chan_cell_queue_t *queue);
|
||||||
|
|
||||||
STATIC void cell_queue_entry_free(cell_queue_entry_t *q, int handed_off);
|
STATIC void cell_queue_entry_xfree(cell_queue_entry_t *q, int handed_off);
|
||||||
|
|
||||||
void channel_write_cell_generic_(channel_t *chan, const char *cell_type,
|
void channel_write_cell_generic_(channel_t *chan, const char *cell_type,
|
||||||
void *cell, cell_queue_entry_t *q);
|
void *cell, cell_queue_entry_t *q);
|
||||||
|
|
|
@ -922,7 +922,7 @@ get_short_version(void)
|
||||||
/** Release additional memory allocated in options
|
/** Release additional memory allocated in options
|
||||||
*/
|
*/
|
||||||
STATIC void
|
STATIC void
|
||||||
or_options_free(or_options_t *options)
|
or_options_free_(or_options_t *options)
|
||||||
{
|
{
|
||||||
if (!options)
|
if (!options)
|
||||||
return;
|
return;
|
||||||
|
@ -6506,7 +6506,7 @@ port_cfg_new(size_t namelen)
|
||||||
|
|
||||||
/** Free all storage held in <b>port</b> */
|
/** Free all storage held in <b>port</b> */
|
||||||
STATIC void
|
STATIC void
|
||||||
port_cfg_free(port_cfg_t *port)
|
port_cfg_free_(port_cfg_t *port)
|
||||||
{
|
{
|
||||||
tor_free(port);
|
tor_free(port);
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,8 +177,12 @@ extern struct config_format_t options_format;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
STATIC port_cfg_t *port_cfg_new(size_t namelen);
|
STATIC port_cfg_t *port_cfg_new(size_t namelen);
|
||||||
STATIC void port_cfg_free(port_cfg_t *port);
|
#define port_cfg_free(port) \
|
||||||
STATIC void or_options_free(or_options_t *options);
|
FREE_AND_NULL(port_cfg_t, port_cfg_free_, (port))
|
||||||
|
STATIC void port_cfg_free_(port_cfg_t *port);
|
||||||
|
#define or_options_free(opt) \
|
||||||
|
FREE_AND_NULL(or_options_t, or_options_free_, (opt))
|
||||||
|
STATIC void or_options_free_(or_options_t *options);
|
||||||
STATIC int options_validate_single_onion(or_options_t *options,
|
STATIC int options_validate_single_onion(or_options_t *options,
|
||||||
char **msg);
|
char **msg);
|
||||||
STATIC int options_validate(or_options_t *old_options,
|
STATIC int options_validate(or_options_t *old_options,
|
||||||
|
|
|
@ -207,9 +207,12 @@ HT_PROTOTYPE(cdm_diff_ht, cdm_diff_t, node, cdm_diff_hash, cdm_diff_eq)
|
||||||
HT_GENERATE2(cdm_diff_ht, cdm_diff_t, node, cdm_diff_hash, cdm_diff_eq,
|
HT_GENERATE2(cdm_diff_ht, cdm_diff_t, node, cdm_diff_hash, cdm_diff_eq,
|
||||||
0.6, tor_reallocarray, tor_free_)
|
0.6, tor_reallocarray, tor_free_)
|
||||||
|
|
||||||
|
#define cdm_diff_free(diff) \
|
||||||
|
FREE_AND_NULL(cdm_diff_t, cdm_diff_free_, (diff))
|
||||||
|
|
||||||
/** Release all storage held in <b>diff</b>. */
|
/** Release all storage held in <b>diff</b>. */
|
||||||
static void
|
static void
|
||||||
cdm_diff_free(cdm_diff_t *diff)
|
cdm_diff_free_(cdm_diff_t *diff)
|
||||||
{
|
{
|
||||||
if (!diff)
|
if (!diff)
|
||||||
return;
|
return;
|
||||||
|
@ -1502,11 +1505,15 @@ consensus_diff_worker_threadfn(void *state_, void *work_)
|
||||||
return WQ_RPL_REPLY;
|
return WQ_RPL_REPLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define consensus_diff_worker_job_free(job) \
|
||||||
|
FREE_AND_NULL(consensus_diff_worker_job_t, \
|
||||||
|
consensus_diff_worker_job_free_, (job))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper: release all storage held in <b>job</b>.
|
* Helper: release all storage held in <b>job</b>.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
consensus_diff_worker_job_free(consensus_diff_worker_job_t *job)
|
consensus_diff_worker_job_free_(consensus_diff_worker_job_t *job)
|
||||||
{
|
{
|
||||||
if (!job)
|
if (!job)
|
||||||
return;
|
return;
|
||||||
|
@ -1649,11 +1656,15 @@ typedef struct consensus_compress_worker_job_t {
|
||||||
compressed_result_t out[ARRAY_LENGTH(compress_consensus_with)];
|
compressed_result_t out[ARRAY_LENGTH(compress_consensus_with)];
|
||||||
} consensus_compress_worker_job_t;
|
} consensus_compress_worker_job_t;
|
||||||
|
|
||||||
|
#define consensus_compress_worker_job_free(job) \
|
||||||
|
FREE_AND_NULL(consensus_compress_worker_job_t, \
|
||||||
|
consensus_compress_worker_job_free_, (job))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Free all resources held in <b>job</b>
|
* Free all resources held in <b>job</b>
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
consensus_compress_worker_job_free(consensus_compress_worker_job_t *job)
|
consensus_compress_worker_job_free_(consensus_compress_worker_job_t *job)
|
||||||
{
|
{
|
||||||
if (!job)
|
if (!job)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -783,9 +783,12 @@ queue_control_event_string,(uint16_t event, char *msg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define queued_event_free(ev) \
|
||||||
|
FREE_AND_NULL(queued_event_t, queued_event_free_, (ev))
|
||||||
|
|
||||||
/** Release all storage held by <b>ev</b>. */
|
/** Release all storage held by <b>ev</b>. */
|
||||||
static void
|
static void
|
||||||
queued_event_free(queued_event_t *ev)
|
queued_event_free_(queued_event_t *ev)
|
||||||
{
|
{
|
||||||
if (ev == NULL)
|
if (ev == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -48,14 +48,25 @@ worker_state_new(void *arg)
|
||||||
ws->onion_keys = server_onion_keys_new();
|
ws->onion_keys = server_onion_keys_new();
|
||||||
return ws;
|
return ws;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define worker_state_free(ws) \
|
||||||
|
FREE_AND_NULL(worker_state_t, worker_state_free_, (ws))
|
||||||
|
|
||||||
static void
|
static void
|
||||||
worker_state_free(void *arg)
|
worker_state_free_(worker_state_t *ws)
|
||||||
{
|
{
|
||||||
worker_state_t *ws = arg;
|
if (!ws)
|
||||||
|
return;
|
||||||
server_onion_keys_free(ws->onion_keys);
|
server_onion_keys_free(ws->onion_keys);
|
||||||
tor_free(ws);
|
tor_free(ws);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
worker_state_free_void(void *arg)
|
||||||
|
{
|
||||||
|
worker_state_free_(arg);
|
||||||
|
}
|
||||||
|
|
||||||
static replyqueue_t *replyqueue = NULL;
|
static replyqueue_t *replyqueue = NULL;
|
||||||
static threadpool_t *threadpool = NULL;
|
static threadpool_t *threadpool = NULL;
|
||||||
static struct event *reply_event = NULL;
|
static struct event *reply_event = NULL;
|
||||||
|
@ -102,7 +113,7 @@ cpu_init(void)
|
||||||
threadpool = threadpool_new(n_threads,
|
threadpool = threadpool_new(n_threads,
|
||||||
replyqueue,
|
replyqueue,
|
||||||
worker_state_new,
|
worker_state_new,
|
||||||
worker_state_free,
|
worker_state_free_void,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
/* Total voodoo. Can we make this more sensible? */
|
/* Total voodoo. Can we make this more sensible? */
|
||||||
|
@ -198,7 +209,7 @@ cpuworkers_rotate_keyinfo(void)
|
||||||
if (threadpool_queue_update(threadpool,
|
if (threadpool_queue_update(threadpool,
|
||||||
worker_state_new,
|
worker_state_new,
|
||||||
update_state_threadfn,
|
update_state_threadfn,
|
||||||
worker_state_free,
|
worker_state_free_void,
|
||||||
NULL)) {
|
NULL)) {
|
||||||
log_warn(LD_OR, "Failed to queue key update for worker threads.");
|
log_warn(LD_OR, "Failed to queue key update for worker threads.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,9 +41,12 @@ typedef struct ddmap_entry_s {
|
||||||
vote_routerstatus_t *vrs_lst[FLEXIBLE_ARRAY_MEMBER];
|
vote_routerstatus_t *vrs_lst[FLEXIBLE_ARRAY_MEMBER];
|
||||||
} ddmap_entry_t;
|
} ddmap_entry_t;
|
||||||
|
|
||||||
|
#define ddmap_entry_free(e) \
|
||||||
|
FREE_AND_NULL(ddmap_entry_t, ddmap_entry_free_, (e))
|
||||||
|
|
||||||
/** Release all storage held by e. */
|
/** Release all storage held by e. */
|
||||||
static void
|
static void
|
||||||
ddmap_entry_free(ddmap_entry_t *e)
|
ddmap_entry_free_(ddmap_entry_t *e)
|
||||||
{
|
{
|
||||||
tor_free(e);
|
tor_free(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2843,10 +2843,13 @@ get_voting_schedule(const or_options_t *options, time_t now, int severity)
|
||||||
return new_voting_schedule;
|
return new_voting_schedule;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define voting_schedule_free(s) \
|
||||||
|
FREE_AND_NULL(voting_schedule_t, voting_schedule_free_, (s))
|
||||||
|
|
||||||
/** Frees a voting_schedule_t. This should be used instead of the generic
|
/** Frees a voting_schedule_t. This should be used instead of the generic
|
||||||
* tor_free. */
|
* tor_free. */
|
||||||
static void
|
static void
|
||||||
voting_schedule_free(voting_schedule_t *voting_schedule_to_free)
|
voting_schedule_free_(voting_schedule_t *voting_schedule_to_free)
|
||||||
{
|
{
|
||||||
if (!voting_schedule_to_free)
|
if (!voting_schedule_to_free)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -2206,7 +2206,7 @@ entry_guard_restriction_free_(entry_guard_restriction_t *rst)
|
||||||
* Release all storage held in <b>state</b>.
|
* Release all storage held in <b>state</b>.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
circuit_guard_state_free(circuit_guard_state_t *state)
|
circuit_guard_state_free_(circuit_guard_state_t *state)
|
||||||
{
|
{
|
||||||
if (!state)
|
if (!state)
|
||||||
return;
|
return;
|
||||||
|
@ -3109,7 +3109,7 @@ get_guard_state_for_bridge_desc_fetch(const char *digest)
|
||||||
|
|
||||||
/** Release all storage held by <b>e</b>. */
|
/** Release all storage held by <b>e</b>. */
|
||||||
STATIC void
|
STATIC void
|
||||||
entry_guard_free(entry_guard_t *e)
|
entry_guard_free_(entry_guard_t *e)
|
||||||
{
|
{
|
||||||
if (!e)
|
if (!e)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -356,7 +356,10 @@ typedef enum {
|
||||||
GUARD_USAGE_DIRGUARD = 1
|
GUARD_USAGE_DIRGUARD = 1
|
||||||
} guard_usage_t;
|
} guard_usage_t;
|
||||||
|
|
||||||
void circuit_guard_state_free(circuit_guard_state_t *state);
|
#define circuit_guard_state_free(val) \
|
||||||
|
FREE_AND_NULL(circuit_guard_state_t, circuit_guard_state_free_, (val))
|
||||||
|
|
||||||
|
void circuit_guard_state_free_(circuit_guard_state_t *state);
|
||||||
int entry_guard_pick_for_circuit(guard_selection_t *gs,
|
int entry_guard_pick_for_circuit(guard_selection_t *gs,
|
||||||
guard_usage_t usage,
|
guard_usage_t usage,
|
||||||
entry_guard_restriction_t *rst,
|
entry_guard_restriction_t *rst,
|
||||||
|
@ -509,7 +512,9 @@ STATIC entry_guard_t *entry_guard_add_to_sample(guard_selection_t *gs,
|
||||||
STATIC entry_guard_t *entry_guards_expand_sample(guard_selection_t *gs);
|
STATIC entry_guard_t *entry_guards_expand_sample(guard_selection_t *gs);
|
||||||
STATIC char *entry_guard_encode_for_state(entry_guard_t *guard);
|
STATIC char *entry_guard_encode_for_state(entry_guard_t *guard);
|
||||||
STATIC entry_guard_t *entry_guard_parse_from_state(const char *s);
|
STATIC entry_guard_t *entry_guard_parse_from_state(const char *s);
|
||||||
STATIC void entry_guard_free(entry_guard_t *e);
|
#define entry_guard_free(e) \
|
||||||
|
FREE_AND_NULL(entry_guard_t, entry_guard_free_, (e))
|
||||||
|
STATIC void entry_guard_free_(entry_guard_t *e);
|
||||||
STATIC void entry_guards_update_filtered_sets(guard_selection_t *gs);
|
STATIC void entry_guards_update_filtered_sets(guard_selection_t *gs);
|
||||||
STATIC int entry_guards_all_primary_guards_are_down(guard_selection_t *gs);
|
STATIC int entry_guards_all_primary_guards_are_down(guard_selection_t *gs);
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -40,7 +40,7 @@ ext_or_cmd_new(uint16_t len)
|
||||||
|
|
||||||
/** Deallocate the Extended ORPort message in <b>cmd</b>. */
|
/** Deallocate the Extended ORPort message in <b>cmd</b>. */
|
||||||
void
|
void
|
||||||
ext_or_cmd_free(ext_or_cmd_t *cmd)
|
ext_or_cmd_free_(ext_or_cmd_t *cmd)
|
||||||
{
|
{
|
||||||
tor_free(cmd);
|
tor_free(cmd);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,11 @@
|
||||||
int connection_ext_or_start_auth(or_connection_t *or_conn);
|
int connection_ext_or_start_auth(or_connection_t *or_conn);
|
||||||
|
|
||||||
ext_or_cmd_t *ext_or_cmd_new(uint16_t len);
|
ext_or_cmd_t *ext_or_cmd_new(uint16_t len);
|
||||||
void ext_or_cmd_free(ext_or_cmd_t *cmd);
|
|
||||||
|
#define ext_or_cmd_free(cmd) \
|
||||||
|
FREE_AND_NULL(ext_or_cmd_t, ext_or_cmd_free_, (cmd))
|
||||||
|
|
||||||
|
void ext_or_cmd_free_(ext_or_cmd_t *cmd);
|
||||||
void connection_or_set_ext_or_identifier(or_connection_t *conn);
|
void connection_or_set_ext_or_identifier(or_connection_t *conn);
|
||||||
void connection_or_remove_from_ext_or_id_map(or_connection_t *conn);
|
void connection_or_remove_from_ext_or_id_map(or_connection_t *conn);
|
||||||
void connection_or_clear_ext_or_id_map(void);
|
void connection_or_clear_ext_or_id_map(void);
|
||||||
|
|
|
@ -527,9 +527,12 @@ HT_PROTOTYPE(clientmap, clientmap_entry_t, node, clientmap_entry_hash,
|
||||||
HT_GENERATE2(clientmap, clientmap_entry_t, node, clientmap_entry_hash,
|
HT_GENERATE2(clientmap, clientmap_entry_t, node, clientmap_entry_hash,
|
||||||
clientmap_entries_eq, 0.6, tor_reallocarray_, tor_free_)
|
clientmap_entries_eq, 0.6, tor_reallocarray_, tor_free_)
|
||||||
|
|
||||||
|
#define clientmap_entry_free(ent) \
|
||||||
|
FREE_AND_NULL(clientmap_entry_t, clientmap_entry_free_, ent)
|
||||||
|
|
||||||
/** Free all storage held by <b>ent</b>. */
|
/** Free all storage held by <b>ent</b>. */
|
||||||
static void
|
static void
|
||||||
clientmap_entry_free(clientmap_entry_t *ent)
|
clientmap_entry_free_(clientmap_entry_t *ent)
|
||||||
{
|
{
|
||||||
if (!ent)
|
if (!ent)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -52,9 +52,12 @@ lookup_v3_desc_as_dir(const uint8_t *key)
|
||||||
return digest256map_get(hs_cache_v3_dir, key);
|
return digest256map_get(hs_cache_v3_dir, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define cache_dir_desc_free(val) \
|
||||||
|
FREE_AND_NULL(hs_cache_dir_descriptor_t, cache_dir_desc_free_, (val))
|
||||||
|
|
||||||
/* Free a directory descriptor object. */
|
/* Free a directory descriptor object. */
|
||||||
static void
|
static void
|
||||||
cache_dir_desc_free(hs_cache_dir_descriptor_t *desc)
|
cache_dir_desc_free_(hs_cache_dir_descriptor_t *desc)
|
||||||
{
|
{
|
||||||
if (desc == NULL) {
|
if (desc == NULL) {
|
||||||
return;
|
return;
|
||||||
|
@ -67,10 +70,9 @@ cache_dir_desc_free(hs_cache_dir_descriptor_t *desc)
|
||||||
/* Helper function: Use by the free all function using the digest256map
|
/* Helper function: Use by the free all function using the digest256map
|
||||||
* interface to cache entries. */
|
* interface to cache entries. */
|
||||||
static void
|
static void
|
||||||
cache_dir_desc_free_(void *ptr)
|
cache_dir_desc_free_void(void *ptr)
|
||||||
{
|
{
|
||||||
hs_cache_dir_descriptor_t *desc = ptr;
|
cache_dir_desc_free_(ptr);
|
||||||
cache_dir_desc_free(desc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create a new directory cache descriptor object from a encoded descriptor.
|
/* Create a new directory cache descriptor object from a encoded descriptor.
|
||||||
|
@ -417,9 +419,12 @@ cache_client_desc_new(const char *desc_str,
|
||||||
return client_desc;
|
return client_desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define cache_client_desc_free(val) \
|
||||||
|
FREE_AND_NULL(hs_cache_client_descriptor_t, cache_client_desc_free_, (val))
|
||||||
|
|
||||||
/** Free memory allocated by <b>desc</b>. */
|
/** Free memory allocated by <b>desc</b>. */
|
||||||
static void
|
static void
|
||||||
cache_client_desc_free(hs_cache_client_descriptor_t *desc)
|
cache_client_desc_free_(hs_cache_client_descriptor_t *desc)
|
||||||
{
|
{
|
||||||
if (desc == NULL) {
|
if (desc == NULL) {
|
||||||
return;
|
return;
|
||||||
|
@ -433,7 +438,7 @@ cache_client_desc_free(hs_cache_client_descriptor_t *desc)
|
||||||
|
|
||||||
/** Helper function: Use by the free all function to clear the client cache */
|
/** Helper function: Use by the free all function to clear the client cache */
|
||||||
static void
|
static void
|
||||||
cache_client_desc_free_(void *ptr)
|
cache_client_desc_free_void(void *ptr)
|
||||||
{
|
{
|
||||||
hs_cache_client_descriptor_t *desc = ptr;
|
hs_cache_client_descriptor_t *desc = ptr;
|
||||||
cache_client_desc_free(desc);
|
cache_client_desc_free(desc);
|
||||||
|
@ -448,18 +453,21 @@ cache_intro_state_new(void)
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define cache_intro_state_free(val) \
|
||||||
|
FREE_AND_NULL(hs_cache_intro_state_t, cache_intro_state_free_, (val))
|
||||||
|
|
||||||
/* Free an hs_cache_intro_state_t object. */
|
/* Free an hs_cache_intro_state_t object. */
|
||||||
static void
|
static void
|
||||||
cache_intro_state_free(hs_cache_intro_state_t *state)
|
cache_intro_state_free_(hs_cache_intro_state_t *state)
|
||||||
{
|
{
|
||||||
tor_free(state);
|
tor_free(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Helper function: use by the free all function. */
|
/* Helper function: use by the free all function. */
|
||||||
static void
|
static void
|
||||||
cache_intro_state_free_(void *state)
|
cache_intro_state_free_void(void *state)
|
||||||
{
|
{
|
||||||
cache_intro_state_free(state);
|
cache_intro_state_free_(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return a newly allocated and initialized hs_cache_client_intro_state_t
|
/* Return a newly allocated and initialized hs_cache_client_intro_state_t
|
||||||
|
@ -472,22 +480,26 @@ cache_client_intro_state_new(void)
|
||||||
return cache;
|
return cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define cache_client_intro_state_free(val) \
|
||||||
|
FREE_AND_NULL(hs_cache_client_intro_state_t, \
|
||||||
|
cache_client_intro_state_free_, (val))
|
||||||
|
|
||||||
/* Free a cache client intro state object. */
|
/* Free a cache client intro state object. */
|
||||||
static void
|
static void
|
||||||
cache_client_intro_state_free(hs_cache_client_intro_state_t *cache)
|
cache_client_intro_state_free_(hs_cache_client_intro_state_t *cache)
|
||||||
{
|
{
|
||||||
if (cache == NULL) {
|
if (cache == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
digest256map_free(cache->intro_points, cache_intro_state_free_);
|
digest256map_free(cache->intro_points, cache_intro_state_free_void);
|
||||||
tor_free(cache);
|
tor_free(cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Helper function: use by the free all function. */
|
/* Helper function: use by the free all function. */
|
||||||
static void
|
static void
|
||||||
cache_client_intro_state_free_(void *entry)
|
cache_client_intro_state_free_void(void *entry)
|
||||||
{
|
{
|
||||||
cache_client_intro_state_free(entry);
|
cache_client_intro_state_free_(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For the given service identity key service_pk and an introduction
|
/* For the given service identity key service_pk and an introduction
|
||||||
|
@ -933,14 +945,14 @@ hs_cache_init(void)
|
||||||
void
|
void
|
||||||
hs_cache_free_all(void)
|
hs_cache_free_all(void)
|
||||||
{
|
{
|
||||||
digest256map_free(hs_cache_v3_dir, cache_dir_desc_free_);
|
digest256map_free(hs_cache_v3_dir, cache_dir_desc_free_void);
|
||||||
hs_cache_v3_dir = NULL;
|
hs_cache_v3_dir = NULL;
|
||||||
|
|
||||||
digest256map_free(hs_cache_v3_client, cache_client_desc_free_);
|
digest256map_free(hs_cache_v3_client, cache_client_desc_free_void);
|
||||||
hs_cache_v3_client = NULL;
|
hs_cache_v3_client = NULL;
|
||||||
|
|
||||||
digest256map_free(hs_cache_client_intro_state,
|
digest256map_free(hs_cache_client_intro_state,
|
||||||
cache_client_intro_state_free_);
|
cache_client_intro_state_free_void);
|
||||||
hs_cache_client_intro_state = NULL;
|
hs_cache_client_intro_state = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -106,9 +106,12 @@ hs_token_new(hs_token_type_t type, size_t token_len,
|
||||||
return hs_token;
|
return hs_token;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define hs_token_free(val) \
|
||||||
|
FREE_AND_NULL(hs_token_t, hs_token_free_, (val))
|
||||||
|
|
||||||
/** Free memory allocated by this <b>hs_token</b>. */
|
/** Free memory allocated by this <b>hs_token</b>. */
|
||||||
static void
|
static void
|
||||||
hs_token_free(hs_token_t *hs_token)
|
hs_token_free_(hs_token_t *hs_token)
|
||||||
{
|
{
|
||||||
if (!hs_token) {
|
if (!hs_token) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -65,7 +65,9 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
static void nodelist_drop_node(node_t *node, int remove_from_ht);
|
static void nodelist_drop_node(node_t *node, int remove_from_ht);
|
||||||
static void node_free(node_t *node);
|
#define node_free(val) \
|
||||||
|
FREE_AND_NULL(node_t, node_free_, (val))
|
||||||
|
static void node_free_(node_t *node);
|
||||||
|
|
||||||
/** count_usable_descriptors counts descriptors with these flag(s)
|
/** count_usable_descriptors counts descriptors with these flag(s)
|
||||||
*/
|
*/
|
||||||
|
@ -656,7 +658,7 @@ nodelist_find_nodes_with_microdesc(const microdesc_t *md)
|
||||||
|
|
||||||
/** Release storage held by <b>node</b> */
|
/** Release storage held by <b>node</b> */
|
||||||
static void
|
static void
|
||||||
node_free(node_t *node)
|
node_free_(node_t *node)
|
||||||
{
|
{
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1102,18 +1102,22 @@ rend_client_lookup_service_authorization(const char *onion_address)
|
||||||
return strmap_get(auth_hid_servs, onion_address);
|
return strmap_get(auth_hid_servs, onion_address);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define rend_service_authorization_free(val) \
|
||||||
|
FREE_AND_NULL(rend_service_authorization_t, \
|
||||||
|
rend_service_authorization_free_, (val))
|
||||||
|
|
||||||
/** Helper: Free storage held by rend_service_authorization_t. */
|
/** Helper: Free storage held by rend_service_authorization_t. */
|
||||||
static void
|
static void
|
||||||
rend_service_authorization_free(rend_service_authorization_t *auth)
|
rend_service_authorization_free_(rend_service_authorization_t *auth)
|
||||||
{
|
{
|
||||||
tor_free(auth);
|
tor_free(auth);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Helper for strmap_free. */
|
/** Helper for strmap_free. */
|
||||||
static void
|
static void
|
||||||
rend_service_authorization_strmap_item_free(void *service_auth)
|
rend_service_authorization_free_void(void *service_auth)
|
||||||
{
|
{
|
||||||
rend_service_authorization_free(service_auth);
|
rend_service_authorization_free_(service_auth);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Release all the storage held in auth_hid_servs.
|
/** Release all the storage held in auth_hid_servs.
|
||||||
|
@ -1124,7 +1128,7 @@ rend_service_authorization_free_all(void)
|
||||||
if (!auth_hid_servs) {
|
if (!auth_hid_servs) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
strmap_free(auth_hid_servs, rend_service_authorization_strmap_item_free);
|
strmap_free(auth_hid_servs, rend_service_authorization_free_void);
|
||||||
auth_hid_servs = NULL;
|
auth_hid_servs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1199,7 +1203,7 @@ rend_parse_service_authorization(const or_options_t *options,
|
||||||
rend_service_authorization_free_all();
|
rend_service_authorization_free_all();
|
||||||
auth_hid_servs = parsed;
|
auth_hid_servs = parsed;
|
||||||
} else {
|
} else {
|
||||||
strmap_free(parsed, rend_service_authorization_strmap_item_free);
|
strmap_free(parsed, rend_service_authorization_free_void);
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,7 +172,7 @@ rend_authorized_client_free_(rend_authorized_client_t *client)
|
||||||
|
|
||||||
/** Helper for strmap_free. */
|
/** Helper for strmap_free. */
|
||||||
static void
|
static void
|
||||||
rend_authorized_client_strmap_item_free(void *authorized_client)
|
rend_authorized_client_free_void(void *authorized_client)
|
||||||
{
|
{
|
||||||
rend_authorized_client_free_(authorized_client);
|
rend_authorized_client_free_(authorized_client);
|
||||||
}
|
}
|
||||||
|
@ -1675,7 +1675,7 @@ rend_service_load_auth_keys(rend_service_t *s, const char *hfname)
|
||||||
memwipe(client_keys_str, 0, strlen(client_keys_str));
|
memwipe(client_keys_str, 0, strlen(client_keys_str));
|
||||||
tor_free(client_keys_str);
|
tor_free(client_keys_str);
|
||||||
}
|
}
|
||||||
strmap_free(parsed_clients, rend_authorized_client_strmap_item_free);
|
strmap_free(parsed_clients, rend_authorized_client_free_void);
|
||||||
|
|
||||||
if (cfname) {
|
if (cfname) {
|
||||||
memwipe(cfname, 0, strlen(cfname));
|
memwipe(cfname, 0, strlen(cfname));
|
||||||
|
|
|
@ -1358,9 +1358,12 @@ bw_array_new(void)
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define bw_array_free(val) \
|
||||||
|
FREE_AND_NULL(bw_array_t, bw_array_free_, (val))
|
||||||
|
|
||||||
/** Free storage held by bandwidth array <b>b</b>. */
|
/** Free storage held by bandwidth array <b>b</b>. */
|
||||||
static void
|
static void
|
||||||
bw_array_free(bw_array_t *b)
|
bw_array_free_(bw_array_t *b)
|
||||||
{
|
{
|
||||||
if (!b) {
|
if (!b) {
|
||||||
return;
|
return;
|
||||||
|
@ -1883,7 +1886,7 @@ predicted_ports_init(void)
|
||||||
* be used.
|
* be used.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
predicted_ports_free(void)
|
predicted_ports_free_all(void)
|
||||||
{
|
{
|
||||||
rephist_total_alloc -=
|
rephist_total_alloc -=
|
||||||
smartlist_len(predicted_ports_list)*sizeof(predicted_port_t);
|
smartlist_len(predicted_ports_list)*sizeof(predicted_port_t);
|
||||||
|
@ -2828,7 +2831,7 @@ HT_GENERATE2(bidimap, bidi_map_entry_t, node, bidi_map_ent_hash,
|
||||||
|
|
||||||
/* DOCDOC bidi_map_free */
|
/* DOCDOC bidi_map_free */
|
||||||
static void
|
static void
|
||||||
bidi_map_free(void)
|
bidi_map_free_all(void)
|
||||||
{
|
{
|
||||||
bidi_map_entry_t **ptr, **next, *ent;
|
bidi_map_entry_t **ptr, **next, *ent;
|
||||||
for (ptr = HT_START(bidimap, &bidi_map); ptr; ptr = next) {
|
for (ptr = HT_START(bidimap, &bidi_map); ptr; ptr = next) {
|
||||||
|
@ -2848,7 +2851,7 @@ rep_hist_reset_conn_stats(time_t now)
|
||||||
mostly_read = 0;
|
mostly_read = 0;
|
||||||
mostly_written = 0;
|
mostly_written = 0;
|
||||||
both_read_and_written = 0;
|
both_read_and_written = 0;
|
||||||
bidi_map_free();
|
bidi_map_free_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Stop collecting connection stats in a way that we can re-start doing
|
/** Stop collecting connection stats in a way that we can re-start doing
|
||||||
|
@ -3037,9 +3040,12 @@ hs_stats_new(void)
|
||||||
return new_hs_stats;
|
return new_hs_stats;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define hs_stats_free(val) \
|
||||||
|
FREE_AND_NULL(hs_stats_t, hs_stats_free_, (val))
|
||||||
|
|
||||||
/** Free an hs_stats_t structure. */
|
/** Free an hs_stats_t structure. */
|
||||||
static void
|
static void
|
||||||
hs_stats_free(hs_stats_t *victim_hs_stats)
|
hs_stats_free_(hs_stats_t *victim_hs_stats)
|
||||||
{
|
{
|
||||||
if (!victim_hs_stats) {
|
if (!victim_hs_stats) {
|
||||||
return;
|
return;
|
||||||
|
@ -3451,8 +3457,8 @@ rep_hist_free_all(void)
|
||||||
tor_free(exit_bytes_read);
|
tor_free(exit_bytes_read);
|
||||||
tor_free(exit_bytes_written);
|
tor_free(exit_bytes_written);
|
||||||
tor_free(exit_streams);
|
tor_free(exit_streams);
|
||||||
predicted_ports_free();
|
predicted_ports_free_all();
|
||||||
bidi_map_free();
|
bidi_map_free_all();
|
||||||
|
|
||||||
if (circuits_for_buffer_stats) {
|
if (circuits_for_buffer_stats) {
|
||||||
SMARTLIST_FOREACH(circuits_for_buffer_stats, circ_buffer_stats_t *, s,
|
SMARTLIST_FOREACH(circuits_for_buffer_stats, circ_buffer_stats_t *, s,
|
||||||
|
|
|
@ -163,7 +163,6 @@ static const routerstatus_t *router_pick_dirserver_generic(
|
||||||
smartlist_t *sourcelist,
|
smartlist_t *sourcelist,
|
||||||
dirinfo_type_t type, int flags);
|
dirinfo_type_t type, int flags);
|
||||||
static void mark_all_dirservers_up(smartlist_t *server_list);
|
static void mark_all_dirservers_up(smartlist_t *server_list);
|
||||||
static void dir_server_free(dir_server_t *ds);
|
|
||||||
static int signed_desc_digest_is_recognized(signed_descriptor_t *desc);
|
static int signed_desc_digest_is_recognized(signed_descriptor_t *desc);
|
||||||
static const char *signed_descriptor_get_body_impl(
|
static const char *signed_descriptor_get_body_impl(
|
||||||
const signed_descriptor_t *desc,
|
const signed_descriptor_t *desc,
|
||||||
|
@ -447,9 +446,12 @@ download_status_for_authority_id_and_sk,(const char *id_digest,
|
||||||
return dl;
|
return dl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define cert_list_free(val) \
|
||||||
|
FREE_AND_NULL(cert_list_t, cert_list_free_, (val))
|
||||||
|
|
||||||
/** Release all space held by a cert_list_t */
|
/** Release all space held by a cert_list_t */
|
||||||
static void
|
static void
|
||||||
cert_list_free(cert_list_t *cl)
|
cert_list_free_(cert_list_t *cl)
|
||||||
{
|
{
|
||||||
if (!cl)
|
if (!cl)
|
||||||
return;
|
return;
|
||||||
|
@ -465,7 +467,7 @@ cert_list_free(cert_list_t *cl)
|
||||||
static void
|
static void
|
||||||
cert_list_free_void(void *cl)
|
cert_list_free_void(void *cl)
|
||||||
{
|
{
|
||||||
cert_list_free(cl);
|
cert_list_free_(cl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Reload the cached v3 key certificates from the cached-certs file in
|
/** Reload the cached v3 key certificates from the cached-certs file in
|
||||||
|
@ -3210,9 +3212,12 @@ extrainfo_free_(extrainfo_t *extrainfo)
|
||||||
tor_free(extrainfo);
|
tor_free(extrainfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define signed_descriptor_free(val) \
|
||||||
|
FREE_AND_NULL(signed_descriptor_t, signed_descriptor_free_, (val))
|
||||||
|
|
||||||
/** Release storage held by <b>sd</b>. */
|
/** Release storage held by <b>sd</b>. */
|
||||||
static void
|
static void
|
||||||
signed_descriptor_free(signed_descriptor_t *sd)
|
signed_descriptor_free_(signed_descriptor_t *sd)
|
||||||
{
|
{
|
||||||
if (!sd)
|
if (!sd)
|
||||||
return;
|
return;
|
||||||
|
@ -4752,9 +4757,12 @@ authority_cert_free_(authority_cert_t *cert)
|
||||||
tor_free(cert);
|
tor_free(cert);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define dir_server_free(val) \
|
||||||
|
FREE_AND_NULL(dir_server_t, dir_server_free_, (val))
|
||||||
|
|
||||||
/** Free storage held in <b>ds</b>. */
|
/** Free storage held in <b>ds</b>. */
|
||||||
static void
|
static void
|
||||||
dir_server_free(dir_server_t *ds)
|
dir_server_free_(dir_server_t *ds)
|
||||||
{
|
{
|
||||||
if (!ds)
|
if (!ds)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -461,7 +461,7 @@ kist_free_all(void)
|
||||||
|
|
||||||
/* Function of the scheduler interface: on_channel_free() */
|
/* Function of the scheduler interface: on_channel_free() */
|
||||||
static void
|
static void
|
||||||
kist_on_channel_free(const channel_t *chan)
|
kist_on_channel_free_fn(const channel_t *chan)
|
||||||
{
|
{
|
||||||
free_socket_info_by_chan(&socket_table, chan);
|
free_socket_info_by_chan(&socket_table, chan);
|
||||||
}
|
}
|
||||||
|
@ -724,7 +724,7 @@ kist_scheduler_run(void)
|
||||||
static scheduler_t kist_scheduler = {
|
static scheduler_t kist_scheduler = {
|
||||||
.type = SCHEDULER_KIST,
|
.type = SCHEDULER_KIST,
|
||||||
.free_all = kist_free_all,
|
.free_all = kist_free_all,
|
||||||
.on_channel_free = kist_on_channel_free,
|
.on_channel_free = kist_on_channel_free_fn,
|
||||||
.init = kist_scheduler_init,
|
.init = kist_scheduler_init,
|
||||||
.on_new_consensus = kist_scheduler_on_new_consensus,
|
.on_new_consensus = kist_scheduler_on_new_consensus,
|
||||||
.schedule = kist_scheduler_schedule,
|
.schedule = kist_scheduler_schedule,
|
||||||
|
|
|
@ -384,7 +384,7 @@ commit_encode(const sr_commit_t *commit, char *dst, size_t len)
|
||||||
static void
|
static void
|
||||||
sr_cleanup(void)
|
sr_cleanup(void)
|
||||||
{
|
{
|
||||||
sr_state_free();
|
sr_state_free_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Using <b>commit</b>, return a newly allocated string containing the commit
|
/* Using <b>commit</b>, return a newly allocated string containing the commit
|
||||||
|
|
|
@ -274,9 +274,12 @@ commit_free_(void *p)
|
||||||
sr_commit_free_(p);
|
sr_commit_free_(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define state_free(val) \
|
||||||
|
FREE_AND_NULL(sr_state_t, state_free_, (val))
|
||||||
|
|
||||||
/* Free a state that was allocated with state_new(). */
|
/* Free a state that was allocated with state_new(). */
|
||||||
static void
|
static void
|
||||||
state_free(sr_state_t *state)
|
state_free_(sr_state_t *state)
|
||||||
{
|
{
|
||||||
if (state == NULL) {
|
if (state == NULL) {
|
||||||
return;
|
return;
|
||||||
|
@ -318,9 +321,12 @@ state_set(sr_state_t *state)
|
||||||
sr_state = state;
|
sr_state = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define disk_state_free(val) \
|
||||||
|
FREE_AND_NULL(sr_disk_state_t, disk_state_free_, (val))
|
||||||
|
|
||||||
/* Free an allocated disk state. */
|
/* Free an allocated disk state. */
|
||||||
static void
|
static void
|
||||||
disk_state_free(sr_disk_state_t *state)
|
disk_state_free_(sr_disk_state_t *state)
|
||||||
{
|
{
|
||||||
if (state == NULL) {
|
if (state == NULL) {
|
||||||
return;
|
return;
|
||||||
|
@ -1286,7 +1292,7 @@ sr_state_srv_is_fresh(void)
|
||||||
|
|
||||||
/* Cleanup and free our disk and memory state. */
|
/* Cleanup and free our disk and memory state. */
|
||||||
void
|
void
|
||||||
sr_state_free(void)
|
sr_state_free_all(void)
|
||||||
{
|
{
|
||||||
state_free(sr_state);
|
state_free(sr_state);
|
||||||
disk_state_free(sr_disk_state);
|
disk_state_free(sr_disk_state);
|
||||||
|
|
|
@ -119,7 +119,7 @@ void sr_state_unset_fresh_srv(void);
|
||||||
int sr_state_init(int save_to_disk, int read_from_disk);
|
int sr_state_init(int save_to_disk, int read_from_disk);
|
||||||
int sr_state_is_initialized(void);
|
int sr_state_is_initialized(void);
|
||||||
void sr_state_save(void);
|
void sr_state_save(void);
|
||||||
void sr_state_free(void);
|
void sr_state_free_all(void);
|
||||||
|
|
||||||
time_t sr_state_get_start_time_of_current_protocol_run(time_t now);
|
time_t sr_state_get_start_time_of_current_protocol_run(time_t now);
|
||||||
unsigned int sr_state_get_phase_duration(void);
|
unsigned int sr_state_get_phase_duration(void);
|
||||||
|
|
|
@ -443,10 +443,10 @@ free_fake_channel(channel_t *chan)
|
||||||
circuitmux_free(chan->cmux);
|
circuitmux_free(chan->cmux);
|
||||||
|
|
||||||
TOR_SIMPLEQ_FOREACH_SAFE(cell, &chan->incoming_queue, next, cell_tmp) {
|
TOR_SIMPLEQ_FOREACH_SAFE(cell, &chan->incoming_queue, next, cell_tmp) {
|
||||||
cell_queue_entry_free(cell, 0);
|
cell_queue_entry_xfree(cell, 0);
|
||||||
}
|
}
|
||||||
TOR_SIMPLEQ_FOREACH_SAFE(cell, &chan->outgoing_queue, next, cell_tmp) {
|
TOR_SIMPLEQ_FOREACH_SAFE(cell, &chan->outgoing_queue, next, cell_tmp) {
|
||||||
cell_queue_entry_free(cell, 0);
|
cell_queue_entry_xfree(cell, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
tor_free(chan);
|
tor_free(chan);
|
||||||
|
|
|
@ -1351,7 +1351,7 @@ test_state_update(void *arg)
|
||||||
tt_assert(state->current_srv);
|
tt_assert(state->current_srv);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
sr_state_free();
|
sr_state_free_all();
|
||||||
UNMOCK(get_my_v3_authority_cert);
|
UNMOCK(get_my_v3_authority_cert);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue