]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Refactor rend_service_load_keys() into outer loop and loop contents
authorNick Mathewson <nickm@torproject.org>
Mon, 18 Jun 2012 16:43:20 +0000 (12:43 -0400)
committerNick Mathewson <nickm@torproject.org>
Mon, 18 Jun 2012 16:43:20 +0000 (12:43 -0400)
src/or/config.c
src/or/rendservice.c
src/or/rendservice.h

index 598051ef4fc93f84686a934f4418a32b85f7cffe..2ea3746139e559186edb9e5c23a8a3d71a277bcb 100644 (file)
@@ -1548,7 +1548,7 @@ options_act(const or_options_t *old_options)
   monitor_owning_controller_process(options->OwningControllerProcess);
 
   /* reload keys as needed for rendezvous services. */
-  if (rend_service_load_keys()<0) {
+  if (rend_service_load_all_keys()<0) {
     log_warn(LD_GENERAL,"Error loading rendezvous service keys");
     return -1;
   }
index b257c7a1907a137836a18bf22866624a98e223b0..d1400938fd596d368a383d86347bc170aaf7c608 100644 (file)
@@ -31,6 +31,8 @@ static rend_intro_point_t *find_intro_point(origin_circuit_t *circ);
 static int intro_point_accepted_intro_count(rend_intro_point_t *intro);
 static int intro_point_should_expire_now(rend_intro_point_t *intro,
                                          time_t now);
+struct rend_service_t;
+static int rend_service_load_keys(struct rend_service_t *s);
 
 /** Represents the mapping from a virtual port of a rendezvous service to
  * a real port on some IP.
@@ -609,10 +611,28 @@ rend_service_update_descriptor(rend_service_t *service)
 
 /** Load and/or generate private keys for all hidden services, possibly
  * including keys for client authorization.  Return 0 on success, -1 on
- * failure.
- */
+ * failure. */
 int
-rend_service_load_keys(void)
+rend_service_load_all_keys(void)
+{
+  SMARTLIST_FOREACH_BEGIN(rend_service_list, rend_service_t *, s) {
+    if (s->private_key)
+      continue;
+    log_info(LD_REND, "Loading hidden-service keys from \"%s\"",
+             s->directory);
+
+    if (rend_service_load_keys(s) < 0)
+      return -1;
+  } SMARTLIST_FOREACH_END(s);
+
+  return 0;
+}
+
+/** Load and/or generate private keys for the hidden service <b>s</b>,
+ * possibly including keys for client authorization.  Return 0 on success, -1
+ * on failure. */
+static int
+rend_service_load_keys(rend_service_t *s)
 {
   int r = 0;
   char fname[512];
@@ -621,12 +641,6 @@ rend_service_load_keys(void)
   char service_id[16+1];
   char extended_desc_cookie[REND_DESC_COOKIE_LEN+1];
 
-  SMARTLIST_FOREACH_BEGIN(rend_service_list, rend_service_t *, s) {
-    if (s->private_key)
-      continue;
-    log_info(LD_REND, "Loading hidden-service keys from \"%s\"",
-             s->directory);
-
     /* Check/create directory */
     if (check_private_dir(s->directory, CPD_CREATE, get_options()->User) < 0)
       return -1;
@@ -864,7 +878,6 @@ rend_service_load_keys(void)
     memset(desc_cook_out, 0, sizeof(desc_cook_out));
     memset(service_id, 0, sizeof(service_id));
     memset(extended_desc_cookie, 0, sizeof(extended_desc_cookie));
-  } SMARTLIST_FOREACH_END(s);
 
   return r;
 }
index e5848785a813ab06017138c14a79a1a881e82e28..baf8d5fb433c36f67e9d9005d5b2f639a4896cb8 100644 (file)
@@ -14,7 +14,7 @@
 
 int num_rend_services(void);
 int rend_config_services(const or_options_t *options, int validate_only);
-int rend_service_load_keys(void);
+int rend_service_load_all_keys(void);
 void rend_services_introduce(void);
 void rend_consider_services_upload(time_t now);
 void rend_hsdir_routers_changed(void);