I think we think we already have exits refuse to be exits if their dns isn't working.
See check_dns_honesty_callback() and the dns_launch_correctness_checks() that it calls.
Well, maybe we try, but it doesn't work consistently right now.
In fact, chutney's upcoming offline mode (#21903 (moved)) will rely on the fact that exits without DNS still allow exiting to IP addresses.
It looks like it could be improved.
If we fix this, we need to make sure AllowBrokenDNSConfig actually works. Or we need to add an option that maintains the current behaviour, because chutney relies on it.
relays with Exit flag are still useful as Exits for IP destination traffic.
That is undeniable, however what is at issue is how useful is that for the network, when the other pieces do not work.
Consider a relay with an Exit flag that only resolves DNS, but doesn't pass traffic. That doesn't seem particularly useful to the network, but it does resolve DNS queries.
I don't think anyone is thinking, "What I'd like is a anonymity network that will only pass IP traffic, and not resolve DNS in any meaningful way"
I think the network is only useful if it works for people who want to have functioning DNS resolution, but also those who are fine not having it, but not one at the expense of the other.
user can expect still use this relay? they are still providing rare exit bandwidth. make use of it as far as possible?
client needs somehow know, the exit cant resolve dns. so that it does not choose to attach a stream with hostname to it. just like it checks exitpolicy to see if it would with usually Support connection target address:port
it would be nice to mark this exit as BadDNS or something. to let client know, not to choose it while using hostname targets. but in any other case.