[or-cvs] r13445: backport r13442 and r13444 (in tor/branches/tor-0_1_2-patches: . src/or)

arma at seul.org arma at seul.org
Sat Feb 9 13:13:39 UTC 2008


Author: arma
Date: 2008-02-09 08:13:38 -0500 (Sat, 09 Feb 2008)
New Revision: 13445

Modified:
   tor/branches/tor-0_1_2-patches/ChangeLog
   tor/branches/tor-0_1_2-patches/src/or/directory.c
   tor/branches/tor-0_1_2-patches/src/or/or.h
   tor/branches/tor-0_1_2-patches/src/or/router.c
Log:
backport r13442 and r13444


Modified: tor/branches/tor-0_1_2-patches/ChangeLog
===================================================================
--- tor/branches/tor-0_1_2-patches/ChangeLog	2008-02-09 10:46:22 UTC (rev 13444)
+++ tor/branches/tor-0_1_2-patches/ChangeLog	2008-02-09 13:13:38 UTC (rev 13445)
@@ -1,5 +1,10 @@
 Changes in versino 0.1.2.20 - 2008-??-??
-  o Minor bugfixes
+  o Major bugfixes:
+    - Patch from "Andrew S. Lists" to catch when we contact a directory
+      mirror at IP address X and he says we look like we're coming from
+      IP address X. Bugfix on 0.1.2.x.
+
+  o Minor bugfixes:
     - Stop recommending that every server operator send mail to tor-ops.
       Resolves bug 597.
     - Fix a few memory leaks that could in theory happen under bizarre error

Modified: tor/branches/tor-0_1_2-patches/src/or/directory.c
===================================================================
--- tor/branches/tor-0_1_2-patches/src/or/directory.c	2008-02-09 10:46:22 UTC (rev 13444)
+++ tor/branches/tor-0_1_2-patches/src/or/directory.c	2008-02-09 13:13:38 UTC (rev 13445)
@@ -900,7 +900,7 @@
   if (conn->dirconn_direct) {
     char *guess = http_get_header(headers, X_ADDRESS_HEADER);
     if (guess) {
-      router_new_address_suggestion(guess);
+      router_new_address_suggestion(guess, conn);
       tor_free(guess);
     }
   }

Modified: tor/branches/tor-0_1_2-patches/src/or/or.h
===================================================================
--- tor/branches/tor-0_1_2-patches/src/or/or.h	2008-02-09 10:46:22 UTC (rev 13444)
+++ tor/branches/tor-0_1_2-patches/src/or/or.h	2008-02-09 13:13:38 UTC (rev 13445)
@@ -2821,7 +2821,8 @@
 void mark_my_descriptor_dirty(void);
 void check_descriptor_bandwidth_changed(time_t now);
 void check_descriptor_ipaddress_changed(time_t now);
-void router_new_address_suggestion(const char *suggestion);
+void router_new_address_suggestion(const char *suggestion,
+                                   const dir_connection_t *conn);
 int router_compare_to_my_exit_policy(edge_connection_t *conn);
 routerinfo_t *router_get_my_routerinfo(void);
 const char *router_get_my_descriptor(void);

Modified: tor/branches/tor-0_1_2-patches/src/or/router.c
===================================================================
--- tor/branches/tor-0_1_2-patches/src/or/router.c	2008-02-09 10:46:22 UTC (rev 13444)
+++ tor/branches/tor-0_1_2-patches/src/or/router.c	2008-02-09 13:13:38 UTC (rev 13445)
@@ -1077,7 +1077,8 @@
  * If this address is different from the one we think we are now, and
  * if our computer doesn't actually know its IP address, then switch. */
 void
-router_new_address_suggestion(const char *suggestion)
+router_new_address_suggestion(const char *suggestion,
+                              const dir_connection_t *conn)
 {
   uint32_t addr, cur = 0;
   struct in_addr in;
@@ -1107,6 +1108,13 @@
     /* Don't believe anybody who says our IP is, say, 127.0.0.1. */
     return;
   }
+  if (addr == conn->_base.addr) {
+    /* Don't believe anybody who says our IP is their IP. */
+    log_debug(LD_DIR, "A directory server told us our IP address is %s, "
+              "but he's just reporting his own IP address. Ignoring.",
+              suggestion);
+    return;
+  }
 
   /* Okay.  We can't resolve our own address, and X-Your-Address-Is is giving
    * us an answer different from what we had the last time we managed to



More information about the tor-commits mailing list