[tor-commits] [tor/master] hs-v3: Move ob_subcreds to hs_service_state_t.

dgoulet at torproject.org dgoulet at torproject.org
Wed Apr 1 12:29:28 UTC 2020


commit 8fda94f944f00f6f436604038ce135ab70f4feb4
Author: George Kadianakis <desnacked at riseup.net>
Date:   Mon Mar 30 23:24:33 2020 +0300

    hs-v3: Move ob_subcreds to hs_service_state_t.
    
    It's more natural there since it's runtime state.
---
 src/feature/hs/hs_circuit.c |  6 +++---
 src/feature/hs/hs_ob.c      |  8 ++++----
 src/feature/hs/hs_service.c | 12 ++++++------
 src/feature/hs/hs_service.h | 16 ++++++++--------
 src/test/test_hs_service.c  |  2 +-
 5 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/src/feature/hs/hs_circuit.c b/src/feature/hs/hs_circuit.c
index fdd226ba7..dc13c7045 100644
--- a/src/feature/hs/hs_circuit.c
+++ b/src/feature/hs/hs_circuit.c
@@ -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;
 }
diff --git a/src/feature/hs/hs_ob.c b/src/feature/hs/hs_ob.c
index f135ecd3f..a6a5cec26 100644
--- a/src/feature/hs/hs_ob.c
+++ b/src/feature/hs/hs_ob.c
@@ -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. */
diff --git a/src/feature/hs/hs_service.c b/src/feature/hs/hs_service.c
index 367f8ca2b..ed4d1af14 100644
--- a/src/feature/hs/hs_service.c
+++ b/src/feature/hs/hs_service.c
@@ -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. */
diff --git a/src/feature/hs/hs_service.h b/src/feature/hs/hs_service.h
index 3fe14878e..0f6a2c235 100644
--- a/src/feature/hs/hs_service.h
+++ b/src/feature/hs/hs_service.h
@@ -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
diff --git a/src/test/test_hs_service.c b/src/test/test_hs_service.c
index 9966bd108..80383baff 100644
--- a/src/test/test_hs_service.c
+++ b/src/test/test_hs_service.c
@@ -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);





More information about the tor-commits mailing list