aboutsummaryrefslogtreecommitdiff
path: root/src/or/control.c
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2008-06-18 05:35:19 +0000
committerRoger Dingledine <arma@torproject.org>2008-06-18 05:35:19 +0000
commit50d3adb81938137b91b1f6720dfe84339e7309ce (patch)
treecd00d53129491a90e043dae4c86c8109f147ade1 /src/or/control.c
parented174245c6700bc09af6ece7df2be36b032e163a (diff)
downloadtor-50d3adb81938137b91b1f6720dfe84339e7309ce.tar.gz
tor-50d3adb81938137b91b1f6720dfe84339e7309ce.zip
I was on the second paragraph of my or-dev mail explaining why I chose to
set starting=1 to avoid potential bugs with having it conflict with 0, which I used to mean uninitialized, when I realized I would be writing many more lame-sounding paragraphs in the future. Just start it at 0 and handle the bugs. svn:r15346
Diffstat (limited to 'src/or/control.c')
-rw-r--r--src/or/control.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/or/control.c b/src/or/control.c
index d15676a4be..bb756b4eef 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -3715,6 +3715,10 @@ bootstrap_status_to_string(bootstrap_status_t s, const char **tag,
const char **summary)
{
switch (s) {
+ case BOOTSTRAP_STATUS_UNDEF:
+ *tag = "undef";
+ *summary = "Undefined";
+ break;
case BOOTSTRAP_STATUS_STARTING:
*tag = "starting";
*summary = "Starting";
@@ -3782,8 +3786,9 @@ bootstrap_status_to_string(bootstrap_status_t s, const char **tag,
/** What percentage through the bootstrap process are we? We remember
* this so we can avoid sending redundant bootstrap status events, and
* so we can guess context for the bootstrap messages which are
- * ambiguous. */
-static int bootstrap_percent = 0;
+ * ambiguous. It starts at 'undef', but gets set to 'starting' while
+ * Tor initializes. */
+static int bootstrap_percent = BOOTSTRAP_STATUS_UNDEF;
/** How many problems have we had getting to the next bootstrapping phase?
* These include failure to establish a connection to a Tor relay,
@@ -3807,7 +3812,7 @@ control_event_bootstrap(bootstrap_status_t status, int progress)
const char *tag, *summary;
char buf[BOOTSTRAP_MSG_LEN];
- if (bootstrap_percent == 100)
+ if (bootstrap_percent == BOOTSTRAP_STATUS_DONE)
return; /* already bootstrapped; nothing to be done here. */
/* special case for handshaking status, since our TLS handshaking code
@@ -3860,7 +3865,7 @@ control_event_bootstrap_problem(const char *warn, int reason)
if (++bootstrap_problems != BOOTSTRAP_PROBLEM_THRESHOLD)
return; /* no worries yet */
- while (bootstrap_status_to_string(status, &tag, &summary) < 0)
+ while (status>=0 && bootstrap_status_to_string(status, &tag, &summary) < 0)
status--; /* find a recognized status string based on current progress */
log_warn(LD_CONTROL, "Problem bootstrapping. Stuck at %d%%: %s. (%s; %s)",