[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r15346: I was on the second paragraph of my or-dev mail explaining w (in tor/trunk: doc/spec/proposals src/or)



Author: arma
Date: 2008-06-18 01:35:19 -0400 (Wed, 18 Jun 2008)
New Revision: 15346

Modified:
   tor/trunk/doc/spec/proposals/137-bootstrap-phases.txt
   tor/trunk/src/or/control.c
   tor/trunk/src/or/or.h
Log:
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.


Modified: tor/trunk/doc/spec/proposals/137-bootstrap-phases.txt
===================================================================
--- tor/trunk/doc/spec/proposals/137-bootstrap-phases.txt	2008-06-18 04:34:52 UTC (rev 15345)
+++ tor/trunk/doc/spec/proposals/137-bootstrap-phases.txt	2008-06-18 05:35:19 UTC (rev 15346)
@@ -55,7 +55,7 @@
   the same order. Some phases might also be skipped (not reported) if the
   associated bootstrap step is already complete.
 
-  Phase 1:
+  Phase 0:
   tag=starting summary="starting"
 
   Tor starts out in this phase.

Modified: tor/trunk/src/or/control.c
===================================================================
--- tor/trunk/src/or/control.c	2008-06-18 04:34:52 UTC (rev 15345)
+++ tor/trunk/src/or/control.c	2008-06-18 05:35:19 UTC (rev 15346)
@@ -3715,6 +3715,10 @@
                            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 @@
 /** 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 @@
   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 @@
   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)",

Modified: tor/trunk/src/or/or.h
===================================================================
--- tor/trunk/src/or/or.h	2008-06-18 04:34:52 UTC (rev 15345)
+++ tor/trunk/src/or/or.h	2008-06-18 05:35:19 UTC (rev 15346)
@@ -3057,9 +3057,10 @@
 /** Enum describing various stages of bootstrapping, for use with controller
  * bootstrap status events. The values range from 0 to 100. */
 typedef enum {
-  BOOTSTRAP_STATUS_STARTING=1,
+  BOOTSTRAP_STATUS_UNDEF=-1,
+  BOOTSTRAP_STATUS_STARTING=0,
   BOOTSTRAP_STATUS_CONN_DIR=5,
-  BOOTSTRAP_STATUS_HANDSHAKE=-1,
+  BOOTSTRAP_STATUS_HANDSHAKE=-2,
   BOOTSTRAP_STATUS_HANDSHAKE_DIR=10,
   BOOTSTRAP_STATUS_ONEHOP_CREATE=15,
   BOOTSTRAP_STATUS_REQUESTING_STATUS=20,