Merge branch 'maint-0.2.8'

This commit is contained in:
Nick Mathewson 2016-03-28 16:14:21 -04:00
commit 3220bd816b
7 changed files with 28 additions and 7 deletions

5
changes/bug17744_redux Normal file
View File

@ -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.

4
changes/bug18673 Normal file
View File

@ -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.

View File

@ -58,8 +58,6 @@ fi
AM_CONDITIONAL(UNITTESTS_ENABLED, test "x$enable_unittests" != "xno") AM_CONDITIONAL(UNITTESTS_ENABLED, test "x$enable_unittests" != "xno")
AM_CONDITIONAL(COVERAGE_ENABLED, test "x$enable_coverage" = "xyes") 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") AM_CONDITIONAL(DISABLE_ASSERTS_IN_UNIT_TESTS, test "x$enable_asserts_in_tests" = "xno")
if test "$enable_static_tor" = "yes"; then if test "$enable_static_tor" = "yes"; then

View File

@ -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 network, and recipients, observers, and even the relays themselves have
difficulty tracking the source of the stream. 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 by providing bandwidth as a relay, change the **ORPort** configuration
option -- see below. Please also consult the documentation on the Tor option -- see below. Please also consult the documentation on the Tor
Project's website. Project's website.

View File

@ -756,6 +756,18 @@ or_circuit_new(circid_t p_circ_id, channel_t *p_chan)
return circ; 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. /** Deallocate space associated with circ.
*/ */
STATIC void STATIC void
@ -767,6 +779,8 @@ circuit_free(circuit_t *circ)
if (!circ) if (!circ)
return; return;
circuit_clear_testing_cell_stats(circ);
if (CIRCUIT_IS_ORIGIN(circ)) { if (CIRCUIT_IS_ORIGIN(circ)) {
origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ); origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ);
mem = ocirc; mem = ocirc;

View File

@ -71,6 +71,8 @@ void assert_circuit_ok(const circuit_t *c);
void circuit_free_all(void); void circuit_free_all(void);
void circuits_handle_oom(size_t current_allocation); 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); void channel_note_destroy_pending(channel_t *chan, circid_t id);
MOCK_DECL(void, channel_note_destroy_not_pending, MOCK_DECL(void, channel_note_destroy_not_pending,
(channel_t *chan, circid_t id)); (channel_t *chan, circid_t id));

View File

@ -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)); memset(cell_stats, 0, sizeof(cell_stats_t));
SMARTLIST_FOREACH_BEGIN(circ->testing_cell_stats, 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_); tor_assert(ent->command <= CELL_COMMAND_MAX_);
if (!ent->removed && !ent->exitward) { if (!ent->removed && !ent->exitward) {
cell_stats->added_cells_appward[ent->command] += 1; 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->removed_cells_exitward[ent->command] += 1;
cell_stats->total_time_exitward[ent->command] += ent->waiting_time * 10; cell_stats->total_time_exitward[ent->command] += ent->waiting_time * 10;
} }
tor_free(ent);
} SMARTLIST_FOREACH_END(ent); } SMARTLIST_FOREACH_END(ent);
smartlist_free(circ->testing_cell_stats); circuit_clear_testing_cell_stats(circ);
circ->testing_cell_stats = NULL;
} }
/** Helper: append a cell statistics string to <code>event_parts</code>, /** Helper: append a cell statistics string to <code>event_parts</code>,