tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit f98dbdb0693afa7dcbf1f395fa7e97116b59199e
parent 19e8844622c91c76a06b5f11e4f9e7290671a3c9
Author: Nick Mathewson <nickm@torproject.org>
Date:   Wed, 10 Mar 2021 15:28:14 -0500

Merge branch 'maint-0.4.5'

Diffstat:
Achanges/ticket40334 | 3+++
Msrc/feature/hs/hs_metrics.c | 8+++++---
Msrc/feature/hs/hs_service.c | 4+++-
3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/changes/ticket40334 b/changes/ticket40334 @@ -0,0 +1,3 @@ + o Minor bugfixes (onion service): + - Remove a harmless BUG() warning when reloading tor configured with onion + services. Fixes bug 40334; bugfix on 0.4.5.1-alpha. diff --git a/src/feature/hs/hs_metrics.c b/src/feature/hs/hs_metrics.c @@ -149,9 +149,11 @@ hs_metrics_service_init(hs_service_t *service) { tor_assert(service); - /* Calling this function twice on a service object is wrong. The caller must - * free the metrics before if so. */ - if (BUG(service->metrics.store)) { + /* This function is called when we register a service and so it could either + * be a new service or a service that was just reloaded through a HUP signal + * for instance. Thus, it is possible that the service has already an + * initialized store. If so, just return. */ + if (service->metrics.store) { return; } diff --git a/src/feature/hs/hs_service.c b/src/feature/hs/hs_service.c @@ -196,7 +196,9 @@ register_service(hs_service_ht *map, hs_service_t *service) if (map == hs_service_map) { hs_service_map_has_changed(); } - /* Setup metrics. */ + /* Setup metrics. This is done here because in order to initialize metrics, + * we require tor to have fully initialized a service so the ports of the + * service can be looked at for instance. */ hs_metrics_service_init(service); return 0;