[or-cvs] r13442: Patch from "Andrew S. Lists" to catch when we contact a dire (tor/trunk/src/or)
arma at seul.org
arma at seul.org
Sat Feb 9 10:36:49 UTC 2008
Author: arma
Date: 2008-02-09 05:36:49 -0500 (Sat, 09 Feb 2008)
New Revision: 13442
Modified:
tor/trunk/src/or/directory.c
tor/trunk/src/or/or.h
tor/trunk/src/or/router.c
Log:
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.
Modified: tor/trunk/src/or/directory.c
===================================================================
--- tor/trunk/src/or/directory.c 2008-02-09 10:04:44 UTC (rev 13441)
+++ tor/trunk/src/or/directory.c 2008-02-09 10:36:49 UTC (rev 13442)
@@ -1257,7 +1257,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/trunk/src/or/or.h
===================================================================
--- tor/trunk/src/or/or.h 2008-02-09 10:04:44 UTC (rev 13441)
+++ tor/trunk/src/or/or.h 2008-02-09 10:36:49 UTC (rev 13442)
@@ -3779,7 +3779,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 *d_conn);
int router_compare_to_my_exit_policy(edge_connection_t *conn);
routerinfo_t *router_get_my_routerinfo(void);
extrainfo_t *router_get_my_extrainfo(void);
Modified: tor/trunk/src/or/router.c
===================================================================
--- tor/trunk/src/or/router.c 2008-02-09 10:04:44 UTC (rev 13441)
+++ tor/trunk/src/or/router.c 2008-02-09 10:36:49 UTC (rev 13442)
@@ -1464,7 +1464,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 *d_conn)
{
uint32_t addr, cur = 0;
struct in_addr in;
@@ -1494,6 +1495,13 @@
/* Don't believe anybody who says our IP is, say, 127.0.0.1. */
return;
}
+ if (addr == d_conn->_base.addr) {
+ /* Don't believe anybody who says our IP is their IP. */
+ log_notice(LD_DIR, "A directory server told us our IP is %s, but that "
+ "seems to be the IP of the directory server saying these "
+ "things. 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