aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2016-03-28 16:14:21 -0400
committerNick Mathewson <nickm@torproject.org>2016-03-28 16:14:21 -0400
commit3220bd816b1a20eeb8bcaf562dc5382439bb00f7 (patch)
tree7adade5a6f60521c55c3d93eadffc0e44f550d00
parent1275d923990b668632126890e19cd50224c79101 (diff)
parentf780d196a91b8c9c5c2581d37326599b4e97b945 (diff)
downloadtor-3220bd816b1a20eeb8bcaf562dc5382439bb00f7.tar.gz
tor-3220bd816b1a20eeb8bcaf562dc5382439bb00f7.zip
Merge branch 'maint-0.2.8'
-rw-r--r--changes/bug17744_redux5
-rw-r--r--changes/bug186734
-rw-r--r--configure.ac2
-rw-r--r--doc/tor.1.txt2
-rw-r--r--src/or/circuitlist.c14
-rw-r--r--src/or/circuitlist.h2
-rw-r--r--src/or/control.c6
7 files changed, 28 insertions, 7 deletions
diff --git a/changes/bug17744_redux b/changes/bug17744_redux
new file mode 100644
index 0000000000..d61e17fec3
--- /dev/null
+++ b/changes/bug17744_redux
@@ -0,0 +1,5 @@
+ o Minor bugfixes (build):
+ - Remove a pair of redundant AM_CONDITIONAL declarations from
+ configure.ac. Fixes one final case of bug 17744; bugfix on
+ 0.2.8.2-alpha.
+
diff --git a/changes/bug18673 b/changes/bug18673
new file mode 100644
index 0000000000..5d6161718a
--- /dev/null
+++ b/changes/bug18673
@@ -0,0 +1,4 @@
+ o Minor bugfixes (memory leak):
+ - Fix a small memory leak that would occur when the
+ TestingEnableCellStatsEvent option was turned on. Fixes bug 18673;
+ bugfix on 0.2.5.2-alpha.
diff --git a/configure.ac b/configure.ac
index ed5d2be6d3..4bdd2d3967 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,8 +58,6 @@ fi
AM_CONDITIONAL(UNITTESTS_ENABLED, test "x$enable_unittests" != "xno")
AM_CONDITIONAL(COVERAGE_ENABLED, test "x$enable_coverage" = "xyes")
-AM_CONDITIONAL(UNITTESTS_ENABLED, test x$enable_unittests != xno)
-AM_CONDITIONAL(COVERAGE_ENABLED, test x$enable_coverage = xyes)
AM_CONDITIONAL(DISABLE_ASSERTS_IN_UNIT_TESTS, test "x$enable_asserts_in_tests" = "xno")
if test "$enable_static_tor" = "yes"; then
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index 6808a801a2..ac21806379 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -30,7 +30,7 @@ Users bounce their TCP streams -- web traffic, ftp, ssh, etc. -- around the
network, and recipients, observers, and even the relays themselves have
difficulty tracking the source of the stream.
-By default, **tor** will only act as a client only. To help the network
+By default, **tor** will act as a client only. To help the network
by providing bandwidth as a relay, change the **ORPort** configuration
option -- see below. Please also consult the documentation on the Tor
Project's website.
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index d6532ddc5f..670c5b3c19 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -756,6 +756,18 @@ or_circuit_new(circid_t p_circ_id, channel_t *p_chan)
return circ;
}
+/** Free all storage held in circ->testing_cell_stats */
+void
+circuit_clear_testing_cell_stats(circuit_t *circ)
+{
+ if (!circ)
+ return;
+ SMARTLIST_FOREACH(circ->testing_cell_stats, testing_cell_stats_entry_t *,
+ ent, tor_free(ent));
+ smartlist_free(circ->testing_cell_stats);
+ circ->testing_cell_stats = NULL;
+}
+
/** Deallocate space associated with circ.
*/
STATIC void
@@ -767,6 +779,8 @@ circuit_free(circuit_t *circ)
if (!circ)
return;
+ circuit_clear_testing_cell_stats(circ);
+
if (CIRCUIT_IS_ORIGIN(circ)) {
origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ);
mem = ocirc;
diff --git a/src/or/circuitlist.h b/src/or/circuitlist.h
index e4f1f47ce6..2707b426ab 100644
--- a/src/or/circuitlist.h
+++ b/src/or/circuitlist.h
@@ -71,6 +71,8 @@ void assert_circuit_ok(const circuit_t *c);
void circuit_free_all(void);
void circuits_handle_oom(size_t current_allocation);
+void circuit_clear_testing_cell_stats(circuit_t *circ);
+
void channel_note_destroy_pending(channel_t *chan, circid_t id);
MOCK_DECL(void, channel_note_destroy_not_pending,
(channel_t *chan, circid_t id));
diff --git a/src/or/control.c b/src/or/control.c
index 2bec8f9317..655b4dd335 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -4971,7 +4971,7 @@ sum_up_cell_stats_by_command(circuit_t *circ, cell_stats_t *cell_stats)
{
memset(cell_stats, 0, sizeof(cell_stats_t));
SMARTLIST_FOREACH_BEGIN(circ->testing_cell_stats,
- testing_cell_stats_entry_t *, ent) {
+ const testing_cell_stats_entry_t *, ent) {
tor_assert(ent->command <= CELL_COMMAND_MAX_);
if (!ent->removed && !ent->exitward) {
cell_stats->added_cells_appward[ent->command] += 1;
@@ -4984,10 +4984,8 @@ sum_up_cell_stats_by_command(circuit_t *circ, cell_stats_t *cell_stats)
cell_stats->removed_cells_exitward[ent->command] += 1;
cell_stats->total_time_exitward[ent->command] += ent->waiting_time * 10;
}
- tor_free(ent);
} SMARTLIST_FOREACH_END(ent);
- smartlist_free(circ->testing_cell_stats);
- circ->testing_cell_stats = NULL;
+ circuit_clear_testing_cell_stats(circ);
}
/** Helper: append a cell statistics string to <code>event_parts</code>,