]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
hs-v3: Move ob_subcreds to hs_service_state_t.
authorGeorge Kadianakis <desnacked@riseup.net>
Mon, 30 Mar 2020 20:24:33 +0000 (23:24 +0300)
committerGeorge Kadianakis <desnacked@riseup.net>
Mon, 30 Mar 2020 20:37:26 +0000 (23:37 +0300)
It's more natural there since it's runtime state.

src/feature/hs/hs_circuit.c
src/feature/hs/hs_ob.c
src/feature/hs/hs_service.c
src/feature/hs/hs_service.h
src/test/test_hs_service.c

index fdd226ba79a9d93bcda86f81a587bf712ed07dc1..dc13c7045ecb8b440fe1a20e524d045a020b4c44 100644 (file)
@@ -984,13 +984,13 @@ get_subcredential_for_handling_intro2_cell(const hs_service_t *service,
 
   /* This should not happen since we should have made onionbalance
    * subcredentials when we created our descriptors. */
-  if (BUG(!service->ob_subcreds)) {
+  if (BUG(!service->state.ob_subcreds)) {
     return -1;
   }
 
   /* We are an onionbalance instance: */
-  data->n_subcredentials = service->n_ob_subcreds;
-  data->subcredentials = service->ob_subcreds;
+  data->n_subcredentials = service->state.n_ob_subcreds;
+  data->subcredentials = service->state.ob_subcreds;
 
   return 0;
 }
index f135ecd3f4342a82e6bdba22bc7623ccb3f5a68c..a6a5cec26f50f6a3d3dd888facf22155258a7fdb 100644 (file)
@@ -392,12 +392,12 @@ hs_ob_refresh_keys(hs_service_t *service)
   }
 
   /* Delete old subcredentials if any */
-  if (service->ob_subcreds) {
-    tor_free(service->ob_subcreds);
+  if (service->state.ob_subcreds) {
+    tor_free(service->state.ob_subcreds);
   }
 
-  service->ob_subcreds = ob_subcreds;
-  service->n_ob_subcreds = num_subcreds;
+  service->state.ob_subcreds = ob_subcreds;
+  service->state.n_ob_subcreds = num_subcreds;
 }
 
 /** Free any memory allocated by the onionblance subsystem. */
index 367f8ca2b33354bcad57dcb2d6b845912c803620..ed4d1af145b456cd7724df4d128559a6ac13e3a4 100644 (file)
@@ -896,11 +896,11 @@ move_hs_state(hs_service_t *src_service, hs_service_t *dst_service)
 
   dst->next_rotation_time = src->next_rotation_time;
 
-  if (src_service->ob_subcreds) {
-    dst_service->ob_subcreds = src_service->ob_subcreds;
-    dst_service->n_ob_subcreds =  src_service->n_ob_subcreds;
+  if (src->ob_subcreds) {
+    dst->ob_subcreds = src->ob_subcreds;
+    dst->n_ob_subcreds =  src->n_ob_subcreds;
 
-    src_service->ob_subcreds = NULL; /* steal pointer reference */
+    src->ob_subcreds = NULL; /* steal pointer reference */
   }
 }
 
@@ -4162,8 +4162,8 @@ hs_service_free_(hs_service_t *service)
   }
 
   /* Free onionbalance subcredentials (if any) */
-  if (service->ob_subcreds) {
-    tor_free(service->ob_subcreds);
+  if (service->state.ob_subcreds) {
+    tor_free(service->state.ob_subcreds);
   }
 
   /* Wipe service keys. */
index 3fe14878ed216e112796a5cb205da21b419c0645..0f6a2c2358deae4fa5d23dc5ea1875d7bd240e44 100644 (file)
@@ -279,6 +279,14 @@ typedef struct hs_service_state_t {
   /** When is the next time we should rotate our descriptors. This is has to be
    * done at the start time of the next SRV protocol run. */
   time_t next_rotation_time;
+
+  /* If this is an onionbalance instance, this is an array of subcredentials
+   * that should be used when decrypting an INTRO2 cell. If this is not an
+   * onionbalance instance, this is NULL.
+   * See [ONIONBALANCE] section in rend-spec-v3.txt for more details . */
+  hs_subcredential_t *ob_subcreds;
+  /* Number of OB subcredentials */
+  size_t n_ob_subcreds;
 } hs_service_state_t;
 
 /** Representation of a service running on this tor instance. */
@@ -304,14 +312,6 @@ typedef struct hs_service_t {
   hs_service_descriptor_t *desc_current;
   /** Next descriptor. */
   hs_service_descriptor_t *desc_next;
-
-  /* If this is an onionbalance instance, this is an array of subcredentials
-   * that should be used when decrypting an INTRO2 cell. If this is not an
-   * onionbalance instance, this is NULL.
-   * See [ONIONBALANCE] section in rend-spec-v3.txt for more details . */
-  hs_subcredential_t *ob_subcreds;
-  /* Number of OB subcredentials */
-  size_t n_ob_subcreds;
 } hs_service_t;
 
 /** For the service global hash map, we define a specific type for it which
index 9966bd108d23dacd9deb5220d313f426cc702bc0..80383baff8cf666fe8b7151c9904e38d2f44fbf9 100644 (file)
@@ -2520,7 +2520,7 @@ test_intro2_handling(void *arg)
   /* Start cleaning up X */
   replaycache_free(x_service.state.replay_cache_rend_cookie);
   smartlist_free(x_service.config.ob_master_pubkeys);
-  tor_free(x_service.ob_subcreds);
+  tor_free(x_service.state.ob_subcreds);
   service_descriptor_free(x_service.desc_current);
   service_descriptor_free(x_service.desc_next);
   service_intro_point_free(x_ip);