From b25ca8af06532d3847ce11040f970a1c001c1ad8 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 28 Jun 2011 14:23:28 -0400 Subject: [PATCH] Limit the number of different handshake reasons to report If connections failed in more than 10 different states, let's just report the top ten states. --- src/or/connection_or.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 85df78bd6c..b5cd68a964 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -221,6 +221,9 @@ broken_state_count_compare(const void **a_ptr, const void **b_ptr) return a->count - b->count; } +/** DOCDOC */ +#define MAX_REASONS_TO_REPORT 10 + /** DOCDOC */ void connection_or_report_broken_states(int severity, int domain) @@ -242,9 +245,12 @@ connection_or_report_broken_states(int severity, int domain) smartlist_sort(items, broken_state_count_compare); - log(severity, domain, "%d connections have failed:", total); + log(severity, domain, "%d connections have failed%s", total, + smartlist_len(items) > MAX_REASONS_TO_REPORT ? ". Top reasons:" : ":"); SMARTLIST_FOREACH_BEGIN(items, const broken_state_count_t *, c) { + if (c_sl_idx > MAX_REASONS_TO_REPORT) + break; log(severity, domain, " %d connections died in state %s", (int)c->count, c->state); } SMARTLIST_FOREACH_END(c);