aboutsummaryrefslogtreecommitdiff
path: root/src/core/or/channel.h
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2020-08-06 11:21:00 -0400
committerGeorge Kadianakis <desnacked@riseup.net>2020-08-25 16:02:59 +0300
commit75772ea096e030ecc79f67b1444cac42aaed7449 (patch)
tree8e57eb6030219302ffbd92ce63d83e0000ebe9aa /src/core/or/channel.h
parentafd88ee87fa27fd7f9d9f63222ac472cdd975f68 (diff)
downloadtor-75772ea096e030ecc79f67b1444cac42aaed7449.tar.gz
tor-75772ea096e030ecc79f67b1444cac42aaed7449.zip
Validate address more carefully when checking self-reachability
Previously, we would treat *any* incoming circuit on a non-local channel as meaning that our ORPort was reachable. With this patch, we make sure that the address that the peer _says_ we have is the same as the one we're trying to advertise right now. Closes 20165. Bugfix on 4f5192b2803c706 in 0.1.0.1-rc, when reachability self-tests were first introduced.
Diffstat (limited to 'src/core/or/channel.h')
-rw-r--r--src/core/or/channel.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/core/or/channel.h b/src/core/or/channel.h
index d52ebdf619..fc0dd3aaac 100644
--- a/src/core/or/channel.h
+++ b/src/core/or/channel.h
@@ -236,6 +236,9 @@ struct channel_t {
/** The handle to this channel (to free on canceled timers) */
struct channel_handle_t *timer_handle;
+ /** If not UNSPEC, the address that the peer says we have. */
+ tor_addr_t addr_according_to_peer;
+
/**
* These two fields specify the minimum and maximum negotiated timeout
* values for inactivity (send or receive) before we decide to pad a