]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
patch "14a" from karsten: don't fail if we can't find
authorRoger Dingledine <arma@torproject.org>
Thu, 24 Jan 2008 22:46:29 +0000 (22:46 +0000)
committerRoger Dingledine <arma@torproject.org>
Thu, 24 Jan 2008 22:46:29 +0000 (22:46 +0000)
REND_NUMBER_OF_CONSECUTIVE_REPLICAS v2 hsdirs.

svn:r13263

src/or/directory.c
src/or/or.h
src/or/rendservice.c
src/or/routerlist.c

index 4242184c71a1ee5f99dd9bc8b396dce5294d0e20..b492d75527f7d4be3d20a008da9618ea99897995 100644 (file)
@@ -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. */
index edc786b101f4016b1545b6d6c5b3dec285afe8d7..287591f857e2f5a8d9790873be779f1b6e683fdf 100644 (file)
@@ -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
index 1a355c883db211196d04ad22375893c351213527..976ba455737ce400260a2d7fd619a9fece098623 100644 (file)
@@ -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;
index 5aa934ae64d3157166f04a3a07fd20d1504d5dd4..46003601e55b469e0ae7b206a341741d114b54ed 100644 (file)
@@ -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