hs: BUG() is triggered with ephemeral service on config reload
Ticket legacy/trac#20853 (moved) introduced the issue with commit 63d3ba96f973735ded16e78bd0b8406b6fcdec35
(tor-0.3.0.1-alpha) with:
+ if (BUG(rend_service_is_ephemeral(new)) ||
+ BUG(rend_service_is_ephemeral(old))) {
+ continue;
The new service list does not ONLY contains ephemeral service so if you have one regular service and then you add an ephemeral one, a config reload will trigger BUG(rend_service_is_ephemeral(new)
because that new
object is from the global list containing all types of service.
Furthermore, this whole loop that is suppose to copy the intro points from the current service to the newly configured one is broken with that commit.
I'm working on a refactoring to first fix this bug then extract this large loop into a function and improve few things along the way with unit tests. It is also an important piece of work for legacy/trac#20657 (moved) (prop224 service) because we'll need it for the v3 service list.