Wrong service-side HSv3 hash ring for HSv3 once a day (low impact)
Here is another bug we found with dgoulet at HOPE:
In set_rotation_time()
we set the next rotation time to next midnight:
service->state.next_rotation_time =
sr_state_get_start_time_of_current_protocol_run() +
sr_state_get_protocol_run_duration();
Supposedly we do that because at next midnight the next SRV value is computed, and hence we want the next descriptor to use that next SRV value.
However there is of course no guarantee that the service has the consensus with the right SRV at that point, and actually there is no chance that's the case since the consensus is computed exactly at midnight.
This means that the first upload of the next descriptor is done with a wrong HSDir. We think that this should not actually impact reachability since that first descriptor upload should only be used by severely clock skewed clients.
We should investigate more.