[tor-commits] [tor/master] Allow the unit tests to pass a service list to rend_service_load_all_keys

nickm at torproject.org nickm at torproject.org
Tue Sep 13 14:42:00 UTC 2016


commit 65b2d34c9cb3434c26be71de6f725244444824a7
Author: teor <teor2345 at gmail.com>
Date:   Wed Sep 7 13:24:43 2016 +1000

    Allow the unit tests to pass a service list to rend_service_load_all_keys
---
 src/or/rendservice.c | 20 ++++++++++++++++----
 src/or/rendservice.h |  2 +-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index ed89268..c91cd50 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -1153,12 +1153,24 @@ rend_service_poison_new_single_onion_dirs(const smartlist_t *service_list)
 }
 
 /** Load and/or generate private keys for all hidden services, possibly
- * including keys for client authorization.  Return 0 on success, -1 on
- * failure. */
+ * including keys for client authorization.
+ * If a <b>service_list</b> is provided, treat it as the list of hidden
+ * services (used in unittests). Otherwise, require that rend_service_list is
+ * not NULL.
+ * Return 0 on success, -1 on failure. */
 int
-rend_service_load_all_keys(void)
+rend_service_load_all_keys(const smartlist_t *service_list)
 {
-  SMARTLIST_FOREACH_BEGIN(rend_service_list, rend_service_t *, s) {
+  const smartlist_t *s_list;
+  /* If no special service list is provided, then just use the global one. */
+  if (!service_list) {
+    tor_assert(rend_service_list);
+    s_list = rend_service_list;
+  } else {
+    s_list = service_list;
+  }
+
+  SMARTLIST_FOREACH_BEGIN(s_list, rend_service_t *, s) {
     if (s->private_key)
       continue;
     log_info(LD_REND, "Loading hidden-service keys from \"%s\"",
diff --git a/src/or/rendservice.h b/src/or/rendservice.h
index 0cf448e..ec32262 100644
--- a/src/or/rendservice.h
+++ b/src/or/rendservice.h
@@ -123,7 +123,7 @@ STATIC void rend_service_free(rend_service_t *service);
 
 int num_rend_services(void);
 int rend_config_services(const or_options_t *options, int validate_only);
-int rend_service_load_all_keys(void);
+int rend_service_load_all_keys(const smartlist_t *service_list);
 void rend_services_add_filenames_to_lists(smartlist_t *open_lst,
                                           smartlist_t *stat_lst);
 void rend_consider_services_intro_points(void);





More information about the tor-commits mailing list