IPv6-only clients can't fetch microdescriptors on 0.2.8.5-rc
There's a lovely catch-22 when IPv6-only clients try to fetch microdescriptors:
- some fallback directories are on IPv6, and deliver the microdescriptor consensus
- but the microdescriptor consensus doesn't contain any IPv6 addresses
- but it's a consensus, so IPv6-only clients try to use it to find an IPv6 relay, and fail
A solution is to teach IPv6-only clients to get (at least some of) their descriptors from the fallback directories, at least until they have some IPv6 microdescriptors. Perhaps this should happen automatically when the entire consensus fails, but for some reason it doesn't.
I have no idea how we didn't catch this during testing - perhaps there were always cached descriptors? Perhaps we broke falling back to the fallbacks for descriptors?