[tor-bugs] #25761 [Core Tor/Tor]: hs: Reload signal (HUP) doesn't remove a disabled service

Tor Bug Tracker & Wiki blackhole at torproject.org
Sat May 5 11:59:32 UTC 2018


#25761: hs: Reload signal (HUP) doesn't remove a disabled service
-------------------------------------------------+-------------------------
 Reporter:  dgoulet                              |          Owner:  dgoulet
     Type:  defect                               |         Status:
                                                 |  accepted
 Priority:  Medium                               |      Milestone:  Tor:
                                                 |  0.3.4.x-final
Component:  Core Tor/Tor                         |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  032-backport, 033-backport, tor-hs,  |  Actual Points:
  regression                                     |
Parent ID:                                       |         Points:
 Reviewer:                                       |        Sponsor:
-------------------------------------------------+-------------------------

Comment (by asn):

 I spent an hour today doing some debugging here. The main issue that
 causes the bug here is that when we enter `rend_service_prune_list()`
 after the HUP,  to shutdown old services, we encounter
 `rend_service_staging_list` being `NULL` and we stop the pruning by
 hitting:
 {{{
   /* Don't try to prune anything if we have no staging list. */
   if (!rend_service_staging_list) {
     return;
   }
 }}}

 Seems like `rend_service_staging_list` gets `NULL`ed during the initial
 service configuration (before the HUP) in
 `rend_service_prune_list_impl_()` with:
 {{{
   /* Finally, nullify the staging list pointer as we don't need it anymore
    * and it needs to be NULL before the next reload. */
   rend_service_staging_list = NULL;
 }}}
 and then nothing actually sets up the staging list after the HUP because
 we are not adding any services, so we skip the post-HUP pruning...

 I guess what we need to do is to setup the staging list even when we have
 0 services to configure? Or alternatively, don't check for
 `!rend_service_prune_list` when pruning? Need to dig more into this...

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/25761#comment:2>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list