mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Merge remote-tracking branch 'tor-github/pr/1485'
This commit is contained in:
commit
a6ad26fd5f
@ -14,6 +14,8 @@
|
||||
|
||||
#include "core/or/or.h"
|
||||
|
||||
#include "lib/container/handles.h"
|
||||
|
||||
#include "core/or/cell_queue_st.h"
|
||||
|
||||
struct hs_token_t;
|
||||
@ -59,6 +61,9 @@ struct circuit_t {
|
||||
uint32_t magic; /**< For memory and type debugging: must equal
|
||||
* ORIGIN_CIRCUIT_MAGIC or OR_CIRCUIT_MAGIC. */
|
||||
|
||||
/** Handle entry for handle-based lookup */
|
||||
HANDLE_ENTRY(circuit, circuit_t);
|
||||
|
||||
/** The channel that is next in this circuit. */
|
||||
channel_t *n_chan;
|
||||
|
||||
|
@ -147,6 +147,9 @@ static int any_opened_circs_cached_val = 0;
|
||||
|
||||
/********* END VARIABLES ************/
|
||||
|
||||
/* Implement circuit handle helpers. */
|
||||
HANDLE_IMPL(circuit, circuit_t,)
|
||||
|
||||
or_circuit_t *
|
||||
TO_OR_CIRCUIT(circuit_t *x)
|
||||
{
|
||||
@ -1247,6 +1250,9 @@ circuit_free_(circuit_t *circ)
|
||||
/* Free any circuit padding structures */
|
||||
circpad_circuit_free_all_machineinfos(circ);
|
||||
|
||||
/* Clear all dangling handle references. */
|
||||
circuit_handles_clear(circ);
|
||||
|
||||
if (should_free) {
|
||||
memwipe(mem, 0xAA, memlen); /* poison memory */
|
||||
tor_free(mem);
|
||||
|
@ -12,6 +12,7 @@
|
||||
#ifndef TOR_CIRCUITLIST_H
|
||||
#define TOR_CIRCUITLIST_H
|
||||
|
||||
#include "lib/container/handles.h"
|
||||
#include "lib/testsupport/testsupport.h"
|
||||
#include "feature/hs/hs_ident.h"
|
||||
#include "core/or/ocirc_event.h"
|
||||
@ -242,6 +243,11 @@ MOCK_DECL(void, channel_note_destroy_not_pending,
|
||||
|
||||
smartlist_t *circuit_find_circuits_to_upgrade_from_guard_wait(void);
|
||||
|
||||
/* Declare the handle helpers */
|
||||
HANDLE_DECL(circuit, circuit_t, )
|
||||
#define circuit_handle_free(h) \
|
||||
FREE_AND_NULL(circuit_handle_t, circuit_handle_free_, (h))
|
||||
|
||||
#ifdef CIRCUITLIST_PRIVATE
|
||||
STATIC void circuit_free_(circuit_t *circ);
|
||||
#define circuit_free(circ) FREE_AND_NULL(circuit_t, circuit_free_, (circ))
|
||||
|
Loading…
Reference in New Issue
Block a user