Project

General

Profile

Actions

Feature #18151

closed

Incorrect Resolv result when DNS server is unreachable

Added by yann.gouverneur (Yann Gouverneur) over 2 years ago. Updated 4 months ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:105161]

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

test_resolv.rb (702 Bytes) test_resolv.rb yann.gouverneur (Yann Gouverneur), 09/06/2021 07:06 PM

Updated by jeremyevans0 (Jeremy Evans) over 2 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

Actions #2

Updated by jeremyevans (Jeremy Evans) 4 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]

https://github.com/ruby/resolv/commit/c0e5abab76

Actions

Also available in: Atom PDF

Like0
Like0Like0