summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorteor <teor2345@gmail.com>2016-09-07 13:24:43 +1000
committerNick Mathewson <nickm@torproject.org>2016-09-13 10:13:56 -0400
commit65b2d34c9cb3434c26be71de6f725244444824a7 (patch)
treefa2cf44281dca611879dc3e341ae289fa5f554b8
parent41f96078c23e3ef1c39a853841332cac3e133a94 (diff)
downloadtor-65b2d34c9cb3434c26be71de6f725244444824a7.tar.gz
tor-65b2d34c9cb3434c26be71de6f725244444824a7.zip
Allow the unit tests to pass a service list to rend_service_load_all_keys
-rw-r--r--src/or/rendservice.c20
-rw-r--r--src/or/rendservice.h2
2 files changed, 17 insertions, 5 deletions
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index ed89268459..c91cd50fc1 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 0cf448e207..ec32262fea 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);