aboutsummaryrefslogtreecommitdiff
path: root/src/or/or.h
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2009-07-27 21:01:24 -0400
committerRoger Dingledine <arma@torproject.org>2009-07-27 21:58:32 -0400
commit2b63fa40e8349e0e6c40d0660d9df5b0ba73937e (patch)
tree533c7b62fa1081b970c9ab9965f133cb222c4405 /src/or/or.h
parentf39cee375472a6e3a4f0decb7e2f91c5768a2165 (diff)
downloadtor-2b63fa40e8349e0e6c40d0660d9df5b0ba73937e.tar.gz
tor-2b63fa40e8349e0e6c40d0660d9df5b0ba73937e.zip
three hacks to workaround bug 1038
The problem is that clients and hidden services are receiving relay_early cells, and they tear down the circuit. Hack #1 is for rendezvous points to rewrite relay_early cells to relay cells. That way there are never any incoming relay_early cells. Hack #2 is for clients and hidden services to never send a relay_early cell on an established rendezvous circuit. That works around rendezvous points that haven't upgraded yet. Hack #3 is for clients and hidden services to not tear down the circuit when they receive an inbound relay_early cell. We already refuse extend cells at clients.
Diffstat (limited to 'src/or/or.h')
-rw-r--r--src/or/or.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/or/or.h b/src/or/or.h
index eddeda1531..fba7af0da0 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -488,6 +488,11 @@ typedef enum {
(p)<=_CIRCUIT_PURPOSE_C_MAX)
/** True iff the circuit_t <b>c</b> is actually an origin_circuit_t. */
#define CIRCUIT_IS_ORIGIN(c) (CIRCUIT_PURPOSE_IS_ORIGIN((c)->purpose))
+/** True iff the circuit purpose <b>p</b> is for an established rendezvous
+ * circuit. */
+#define CIRCUIT_PURPOSE_IS_ESTABLISHED_REND(p) \
+ ((p) == CIRCUIT_PURPOSE_C_REND_JOINED || \
+ (p) == CIRCUIT_PURPOSE_S_REND_JOINED)
/** How many circuits do we want simultaneously in-progress to handle
* a given stream? */