summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Ransom <rransom.8774@gmail.com>2011-10-13 08:48:31 -0700
committerRobert Ransom <rransom.8774@gmail.com>2011-10-30 02:17:05 -0700
commit3f6a2d3e2a83d60f287c485c4f444220792b0a66 (patch)
tree6bc7b1010943b142846cb0817a9b2fbcb10e7139 /src
parent6f035cb2b450e8779bff50d6ed83e4822a49f0fe (diff)
downloadtor-3f6a2d3e2a83d60f287c485c4f444220792b0a66.tar.gz
tor-3f6a2d3e2a83d60f287c485c4f444220792b0a66.zip
Record which intro points were listed in the last HS desc
Diffstat (limited to 'src')
-rw-r--r--src/or/or.h4
-rw-r--r--src/or/rendservice.c7
2 files changed, 11 insertions, 0 deletions
diff --git a/src/or/or.h b/src/or/or.h
index 215bde245b..e1bd25c738 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -3481,6 +3481,10 @@ typedef struct rend_intro_point_t {
* circuit-build timeout. See also MAX_INTRO_POINT_REACHABILITY_FAILURES. */
unsigned int unreachable_count : 3;
+ /** (Service side only) Flag indicating that this intro point was
+ * included in the last HS descriptor we generated. */
+ unsigned int listed_in_last_desc : 1;
+
/** (Service side only) The number of INTRODUCE2 cells this intro
* point's circuit has received. */
unsigned int introduction_count : 24;
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index a341dd672b..96ab7a67aa 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -544,10 +544,17 @@ rend_service_update_descriptor(rend_service_t *service)
for (i = 0; i < smartlist_len(service->intro_nodes); ++i) {
rend_intro_point_t *intro_svc = smartlist_get(service->intro_nodes, i);
rend_intro_point_t *intro_desc;
+
+ /* This intro point won't be listed in the descriptor... */
+ intro_svc->listed_in_last_desc = 0;
+
circ = find_intro_circuit(intro_svc, service->pk_digest);
if (!circ || circ->_base.purpose != CIRCUIT_PURPOSE_S_INTRO)
continue;
+ /* ...unless this intro point is listed in the descriptor. */
+ intro_svc->listed_in_last_desc = 1;
+
/* We have an entirely established intro circuit. Publish it in
* our descriptor. */
intro_desc = tor_malloc_zero(sizeof(rend_intro_point_t));