Feature #18151
closedIncorrect Resolv result when DNS server is unreachable
Description
The Resolv class has an incorrect behavior when the DNS server can't be reached.
The attached script highlight the issue which - depending on your needs in resolving host names - could be really problematic.
Here's the output of the script:
$ ruby test_resolv.rb
Resolution of an existing domain name -> OK
["142.250.184.68", "2a00:1450:4002:806::2004"]
Resolution of a non existing domain name -> OK
[]
Attempt of resolving a domain name with an incorrect/unreachable DNS server -> KO
[]
-> Expecting: ResolvError
Obviously the result for both NXDOMAIN and failure to reach the DNS server is identical, hence it make impossible to handle errors programmatically.
A proper result when the DNS server is not reachable would be to get a ResolvError exception fired.
Files
Updated by jeremyevans0 (Jeremy Evans) almost 3 years ago
- ruby -v deleted (
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]) - Backport deleted (
2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN) - Tracker changed from Bug to Feature
The current behavior seems to be expected (the code explicitly rescues the internal ResolvError), so I would consider this a feature request and not a bug. I agree with you that it would be nice to be able to differentiate the cases. I've submitted a pull request to resolv to support a :raise_timeout_error option that allows for the behavior you want: https://github.com/ruby/resolv/pull/14
Updated by jeremyevans (Jeremy Evans) 8 months ago
- Status changed from Open to Closed
Applied in changeset git|7276d4b4e87bfdc9b609f481a734e39c499de253.
[ruby/resolv] Support a :raise_timeout_errors option to raise timeouts as Resolv::ResolvError
This allows to differentiate a timeout from an NXDOMAIN response.
Fixes [Bug #18151]