rend_service_prune_list_impl_() doesn't copy over desc_is_dirty when copying intro points
In rend_service_prune_list_impl_(void)
(src/or/rendservice.c), the introduction points are copied over from the old to new rend_service_t
:
smartlist_add_all(new->intro_nodes, old->intro_nodes);
but, the desc_is_dirty
field is not copied over.
If a reload occurs between after a hidden service is added, but before its descriptor is published for the first time (triggered via desc_is_dirty
), it will not publish its first descriptor until:
rendinitialpostdelay + crypto_rand_int(2*rendpostperiod)
It looks like it's simply missing new->desc_is_dirty = old->desc_is_dirty;
prior to copying of introduction points.
Trac:
Username: jl