diff options
author | Nick Mathewson <nickm@torproject.org> | 2013-02-19 18:29:17 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2013-02-19 18:29:17 -0500 |
commit | 62fb209d837f3f5510075ef8bdb6e231ebdfa9bc (patch) | |
tree | 5cac02bf416adc7cd9c5bb3f0b219d6c6bdb966d /src/or/or.h | |
parent | 337e32f5b8f5f3b310da20bf0135f17d06efb3ab (diff) | |
download | tor-62fb209d837f3f5510075ef8bdb6e231ebdfa9bc.tar.gz tor-62fb209d837f3f5510075ef8bdb6e231ebdfa9bc.zip |
Stop frobbing timestamp_dirty as our sole means to mark circuits unusable
In a number of places, we decrement timestamp_dirty by
MaxCircuitDirtiness in order to mark a stream as "unusable for any
new connections.
This pattern sucks for a few reasons:
* It is nonobvious.
* It is error-prone: decrementing 0 can be a bad choice indeed.
* It really wants to have a function.
It can also introduce bugs if the system time jumps backwards, or if
MaxCircuitDirtiness is increased.
So in this patch, I add an unusable_for_new_conns flag to
origin_circuit_t, make it get checked everywhere it should (I looked
for things that tested timestamp_dirty), and add a new function to
frob it.
For now, the new function does still frob timestamp_dirty (after
checking for underflow and whatnot), in case I missed any cases that
should be checking unusable_for_new_conns.
Fixes bug 6174. We first used this pattern in 516ef41ac1fd26f338c,
which I think was in 0.0.2pre26 (but it could have been 0.0.2pre27).
Diffstat (limited to 'src/or/or.h')
-rw-r--r-- | src/or/or.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/or/or.h b/src/or/or.h index 45eb4673ce..e5c60452fc 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2944,6 +2944,10 @@ typedef struct origin_circuit_t { */ ENUM_BF(path_state_t) path_state : 3; + /* If this flag is set, we should not consider attaching any more + * connections to this circuit. */ + unsigned int unusable_for_new_conns : 1; + /** * Tristate variable to guard against pathbias miscounting * due to circuit purpose transitions changing the decision |