rend_service_prune_list_impl_() doesn't copy over desc_is_dirty when copying intro points
rend_service_prune_list_impl_(void) (src/or/rendservice.c), the introduction points are copied over from the old to new
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.