Project

General

Profile

Actions

Feature #18151

open

Incorrect Resolv result when DNS server is unreachable

Added by yann.gouverneur (Yann Gouverneur) about 2 months ago. Updated about 1 month ago.

Status:
Open
Priority:
Normal
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) about 1 month ago

  • Backport deleted (2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN)
  • ruby -v deleted (ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux])
  • 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

Also available in: Atom PDF