diff --git a/changes/bug25761 b/changes/bug25761 new file mode 100644 index 000000000..096fadcf0 --- /dev/null +++ b/changes/bug25761 @@ -0,0 +1,3 @@ + o Major bugfixes (onion service): + - Correctly detect when onion services get disabled after HUP. + Fixes bug 25761; bugfix on 0.3.2.1. diff --git a/src/or/hs_service.c b/src/or/hs_service.c index 8ddd68c69..b9a1dfc36 100644 --- a/src/or/hs_service.c +++ b/src/or/hs_service.c @@ -859,11 +859,6 @@ register_all_services(void) tor_assert(hs_service_staging_list); - /* We'll save us some allocation and computing time. */ - if (smartlist_len(hs_service_staging_list) == 0) { - return; - } - /* Allocate a new map that will replace the current one. */ new_service_map = tor_malloc_zero(sizeof(*new_service_map)); HT_INIT(hs_service_ht, new_service_map); diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 2c5c5840a..fed8c97eb 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -618,10 +618,11 @@ void rend_service_prune_list(void) { smartlist_t *old_service_list = rend_service_list; - /* Don't try to prune anything if we have no staging list. */ + if (!rend_service_staging_list) { - return; + rend_service_staging_list = smartlist_new(); } + rend_service_prune_list_impl_(); if (old_service_list) { /* Every remaining service in the old list have been removed from the