summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2008-01-24 22:46:29 +0000
committerRoger Dingledine <arma@torproject.org>2008-01-24 22:46:29 +0000
commitcbe9863422f05c5b4e13f9492e18c4d12bbeadec (patch)
tree48c9cf4526f56aecfe83c7c59342179e108b102e
parentab79f532060199c635c72a47009fce1a6702f42b (diff)
downloadtor-cbe9863422f05c5b4e13f9492e18c4d12bbeadec.tar.gz
tor-cbe9863422f05c5b4e13f9492e18c4d12bbeadec.zip
patch "14a" from karsten: don't fail if we can't find
REND_NUMBER_OF_CONSECUTIVE_REPLICAS v2 hsdirs. svn:r13263
-rw-r--r--src/or/directory.c4
-rw-r--r--src/or/or.h2
-rw-r--r--src/or/rendservice.c3
-rw-r--r--src/or/routerlist.c16
4 files changed, 13 insertions, 12 deletions
diff --git a/src/or/directory.c b/src/or/directory.c
index 4242184c71..b492d75527 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -3208,9 +3208,7 @@ directory_post_to_hs_dir(smartlist_t *descs, const char *service_id,
smartlist_free(responsible_dirs);
return;
}
- tor_assert(smartlist_len(responsible_dirs) ==
- REND_NUMBER_OF_CONSECUTIVE_REPLICAS);
- for (j = 0; j < REND_NUMBER_OF_CONSECUTIVE_REPLICAS; j++) {
+ for (j = 0; j < smartlist_len(responsible_dirs); j++) {
char desc_id_base32[REND_DESC_ID_V2_LEN_BASE32 + 1];
hs_dir = smartlist_get(responsible_dirs, j);
/* Send publish request. */
diff --git a/src/or/or.h b/src/or/or.h
index edc786b101..287591f857 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -3953,7 +3953,9 @@ void routerlist_assert_ok(routerlist_t *rl);
const char *esc_router_info(routerinfo_t *router);
void routers_sort_by_identity(smartlist_t *routers);
+#if 0
int hid_serv_have_enough_directories(void);
+#endif
int hid_serv_get_responsible_directories(smartlist_t *responsible_dirs,
const char *id);
#if 0
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 1a355c883d..976ba45573 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -1076,7 +1076,8 @@ upload_service_descriptor(rend_service_t *service)
/* Upload v2 descriptor? */
if (service->descriptor_version == 2 &&
get_options()->PublishHidServDescriptors) {
- if (hid_serv_have_enough_directories()) {
+ networkstatus_vote_t *c = networkstatus_get_latest_consensus();
+ if (c && smartlist_len(c->routerstatus_list) > 0) {
int seconds_valid;
smartlist_t *descs = smartlist_create();
int i;
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 5aa934ae64..46003601e5 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -4474,6 +4474,7 @@ hid_serv_previous_directory(const char *id)
}
#endif
+#if 0
/** Return true, if we are aware of enough hidden service directory to
* usefully perform v2 rend operations on them (publish, fetch, replicate),
* or false otherwise. */
@@ -4494,11 +4495,11 @@ hid_serv_have_enough_directories(void)
});
return 0;
}
+#endif
-/** Determine the REND_NUMBER_OF_CONSECUTIVE_REPLICAS routers that are
- * responsible for <b>id</b> (binary) and add pointers to those routers'
- * routerstatus_t to <b>responsible_dirs</b>. If we don't have enough
- * hidden service directories, return -1, else 0. */
+/** Determine the routers that are responsible for <b>id</b> (binary) and
+ * add pointers to those routers' routerstatus_t to <b>responsible_dirs</b>.
+ * If we don't have a consensus, return -1, else 0. */
int
hid_serv_get_responsible_directories(smartlist_t *responsible_dirs,
const char *id)
@@ -4525,10 +4526,9 @@ hid_serv_get_responsible_directories(smartlist_t *responsible_dirs,
i = 0;
} while (i != start);
- /* XXX020 make this louder once we have some v2hidservs */
- log_info(LD_REND, "We don't have enough hidden service directories to "
- "perform v2 rendezvous operations!");
- return -1;
+ /* Even though we don't have the desired number of hidden service
+ * directories, we are happy with what we got. */
+ return 0;
}
/** Return true if this node is currently acting as hidden service