diff options
author | Nick Mathewson <nickm@torproject.org> | 2015-07-09 12:05:14 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2015-07-09 12:05:14 -0400 |
commit | 327efe9190b2aaf863cfd4a7d8aebfacc58cfd9c (patch) | |
tree | 53e540d72fdd4cd7d714a8b8e34db3146aed4415 /src/or/or.h | |
parent | 57c61f39a0bf0b2e40f58719893a798189f6634f (diff) | |
parent | 5fa280f7adaaf9796b93f32327f10d18359e1f95 (diff) | |
download | tor-327efe9190b2aaf863cfd4a7d8aebfacc58cfd9c.tar.gz tor-327efe9190b2aaf863cfd4a7d8aebfacc58cfd9c.zip |
Merge branch 'bug4862_027_04_squashed'
Diffstat (limited to 'src/or/or.h')
-rw-r--r-- | src/or/or.h | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/or/or.h b/src/or/or.h index 431105b09b..946e7e0def 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -4875,6 +4875,11 @@ typedef struct rend_encoded_v2_service_descriptor_t { * XXX023 Should this be configurable? */ #define INTRO_POINT_LIFETIME_MAX_SECONDS (24*60*60) +/** The maximum number of circuit creation retry we do to an intro point + * before giving up. We try to reuse intro point that fails during their + * lifetime so this is a hard limit on the amount of time we do that. */ +#define MAX_INTRO_POINT_CIRCUIT_RETRIES 3 + /** Introduction point information. Used both in rend_service_t (on * the service side) and in rend_service_descriptor_t (on both the * client and service side). */ @@ -4899,11 +4904,6 @@ typedef struct rend_intro_point_t { * included in the last HS descriptor we generated. */ unsigned int listed_in_last_desc : 1; - /** (Service side only) Flag indicating that - * rend_service_note_removing_intro_point has been called for this - * intro point. */ - unsigned int rend_service_note_removing_intro_point_called : 1; - /** (Service side only) A replay cache recording the RSA-encrypted parts * of INTRODUCE2 cells this intro point's circuit has received. This is * used to prevent replay attacks. */ @@ -4930,15 +4930,16 @@ typedef struct rend_intro_point_t { * point should expire. */ time_t time_to_expire; - /** (Service side only) The time at which we decided that this intro - * point should start expiring, or -1 if this intro point is not yet - * expiring. - * - * This field also serves as a flag to indicate that we have decided - * to expire this intro point, in case intro_point_should_expire_now - * flaps (perhaps due to a clock jump; perhaps due to other - * weirdness, or even a (present or future) bug). */ - time_t time_expiring; + /** (Service side only) The amount of circuit creation we've made to this + * intro point. This is incremented every time we do a circuit relaunch on + * this object which is triggered when the circuit dies but the node is + * still in the consensus. After MAX_INTRO_POINT_CIRCUIT_RETRIES, we give + * up on it. */ + unsigned int circuit_retries; + + /** (Service side only) Set if this intro point has an established circuit + * and unset if it doesn't. */ + unsigned int circuit_established:1; } rend_intro_point_t; #define REND_PROTOCOL_VERSION_BITMASK_WIDTH 16 |