summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2011-06-28 14:29:29 -0400
committerNick Mathewson <nickm@torproject.org>2011-07-11 16:13:17 -0400
commitb0de8560f6f7b54c363226c11d277b6b08b1cbc7 (patch)
tree0a9765b21e2492e844322fe854b4de70ef748c26
parentb25ca8af06532d3847ce11040f970a1c001c1ad8 (diff)
downloadtor-b0de8560f6f7b54c363226c11d277b6b08b1cbc7.tar.gz
tor-b0de8560f6f7b54c363226c11d277b6b08b1cbc7.zip
Report the states of failed TLS connections from bootstrap_problem
-rw-r--r--changes/feature31165
-rw-r--r--src/or/control.c9
2 files changed, 13 insertions, 1 deletions
diff --git a/changes/feature3116 b/changes/feature3116
new file mode 100644
index 0000000000..386790c295
--- /dev/null
+++ b/changes/feature3116
@@ -0,0 +1,5 @@
+ o Major features:
+ - While we're trying to bootstrap, record how many TLS connections
+ fail in each state, and report which states saw the most failures
+ in response to any bootstrap failures. This feature may speed up
+ diagnosis of censorship events.
diff --git a/src/or/control.c b/src/or/control.c
index 6ea9dbe47f..fa0c6cf4e0 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -18,6 +18,7 @@
#include "config.h"
#include "connection.h"
#include "connection_edge.h"
+#include "connection_or.h"
#include "control.h"
#include "directory.h"
#include "dirserv.h"
@@ -4268,6 +4269,7 @@ control_event_bootstrap_problem(const char *warn, int reason)
const char *tag, *summary;
char buf[BOOTSTRAP_MSG_LEN];
const char *recommendation = "ignore";
+ int severity;
/* bootstrap_percent must not be in "undefined" state here. */
tor_assert(status >= 0);
@@ -4292,12 +4294,17 @@ control_event_bootstrap_problem(const char *warn, int reason)
status--; /* find a recognized status string based on current progress */
status = bootstrap_percent; /* set status back to the actual number */
- log_fn(!strcmp(recommendation, "warn") ? LOG_WARN : LOG_INFO,
+ severity = !strcmp(recommendation, "warn") ? LOG_WARN : LOG_INFO;
+
+ log_fn(severity,
LD_CONTROL, "Problem bootstrapping. Stuck at %d%%: %s. (%s; %s; "
"count %d; recommendation %s)",
status, summary, warn,
orconn_end_reason_to_control_string(reason),
bootstrap_problems, recommendation);
+
+ connection_or_report_broken_states(severity, LD_HANDSHAKE);
+
tor_snprintf(buf, sizeof(buf),
"BOOTSTRAP PROGRESS=%d TAG=%s SUMMARY=\"%s\" WARNING=\"%s\" REASON=%s "
"COUNT=%d RECOMMENDATION=%s",