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

[or-cvs] r13688: Servers that don't know their own IP address should go to th (in tor/trunk: . src/or)



Author: arma
Date: 2008-02-23 18:39:16 -0500 (Sat, 23 Feb 2008)
New Revision: 13688

Modified:
   tor/trunk/ChangeLog
   tor/trunk/src/or/dirserv.c
   tor/trunk/src/or/router.c
Log:
Servers that don't know their own IP address should go to the
authorities for their first directory fetch, even if their DirPort
is off or if they don't know they're reachable yet. This will help
them bootstrap better. Bugfix on 0.2.0.18-alpha; fixes bug 609.


Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog	2008-02-23 13:02:18 UTC (rev 13687)
+++ tor/trunk/ChangeLog	2008-02-23 23:39:16 UTC (rev 13688)
@@ -30,6 +30,10 @@
     - Fix code used to find strings within buffers, when those strings
       are not in the first chunk of the buffer.
     - Fix potential segfault when parsing HTTP headers. Bugfix on 0.2.0.x.
+    - Servers that don't know their own IP address should go to the
+      authorities for their first directory fetch, even if their DirPort
+      is off or if they don't know they're reachable yet. This will help
+      them bootstrap better. Bugfix on 0.2.0.18-alpha; fixes bug 609.
 
   o Minor features (performance):
     - Tune parameters for cell pool allocation to minimize amount of

Modified: tor/trunk/src/or/dirserv.c
===================================================================
--- tor/trunk/src/or/dirserv.c	2008-02-23 13:02:18 UTC (rev 13687)
+++ tor/trunk/src/or/dirserv.c	2008-02-23 23:39:16 UTC (rev 13688)
@@ -1118,12 +1118,15 @@
 directory_fetches_from_authorities(or_options_t *options)
 {
   routerinfo_t *me;
+  uint32_t addr;
   if (options->FetchDirInfoEarly)
     return 1;
+  if (options->BridgeRelay == 1)
+    return 0;
+  if (server_mode(options) && router_pick_published_address(options, &addr)<0)
+    return 1; /* we don't know our IP address; ask an authority. */
   if (options->DirPort == 0)
     return 0;
-  if (options->BridgeRelay == 1)
-    return 0;
   if (!server_mode(options) || !advertised_server_mode())
     return 0;
   me = router_get_my_routerinfo();

Modified: tor/trunk/src/or/router.c
===================================================================
--- tor/trunk/src/or/router.c	2008-02-23 13:02:18 UTC (rev 13687)
+++ tor/trunk/src/or/router.c	2008-02-23 23:39:16 UTC (rev 13688)
@@ -1160,9 +1160,10 @@
 
 static int router_guess_address_from_dir_headers(uint32_t *guess);
 
-/** Return our current best guess at our address, either because
+/** Make a current best guess at our address, either because
  * it's configured in torrc, or because we've learned it from
- * dirserver headers. */
+ * dirserver headers. Place the answer in *<b>addr</b> and return
+ * 0 on success, else return -1 if we have no guess. */
 int
 router_pick_published_address(or_options_t *options, uint32_t *addr)
 {