Because openidconnect vendors reqwest (??), we have to re-implement
the entire Resolve trait.
No I don't like it, but I can't think of a better solution.
Previously, only HTTP clients targeting matrix servers (and using the
resolution spec) would use the DNS servers configured in the c10y config.
This happened because reqwest requires any DNS resolvers passed in to
implement reqwest::dns::Resolve, which only the matrix resolver did,
and no other HTTP client had a proper DNS resolver (which used the
configured DNS servers) passed into it.
To fix this we make a custom resolution struct based on reqwest's
reqwest::dns::HickoryDnsResolver, which implements Request with no
other modifications to the DNS response. HickoryDnsResolver itself isn't
exported, which is why we re-created it instead of using it directly.
no im not an LLM i just wrote this to remember my own changes later on
Fixes: continuwuation/continuwuity#2441