diff options
author | Roger Dingledine <arma@torproject.org> | 2009-07-27 21:01:24 -0400 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2009-07-27 21:58:32 -0400 |
commit | 2b63fa40e8349e0e6c40d0660d9df5b0ba73937e (patch) | |
tree | 533c7b62fa1081b970c9ab9965f133cb222c4405 /src/or/or.h | |
parent | f39cee375472a6e3a4f0decb7e2f91c5768a2165 (diff) | |
download | tor-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.h | 5 |
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? */ |