We should prefer the consensus IP:port for dir auths if it's different
I've been running moria1 at a new IP address for the past week, and clients and relays are using it just fine for many things, but some activities continue to use the hard-coded old address.
I think these activities should fall back to the hard-coded address if we don't have a consensus or if the relay in question isn't in our consensus. But if we do have an up-to-date routerstatus, we should prefer it instead.
This flexibility will let us move dir auths in emergencies: they will be able to vote and receive votes in their new location until we can update the code to match.
Specifically, it's these three activities:
-
Posting a vote, a signature, or a relay descriptor to all the dir auths.
-
Dir auths fetching missing votes or signatures from all the dir auths.
-
Dir auths fetching new descriptors from a specific dir auth when they just learned about them from that dir auth's vote.
We already do this desired behavior (prefer the address in the consensus, but fall back to the hard-coded dirservers info if needed) when fetching missing certs.