diff options
| author | Jeremy Evans <code@jeremyevans.net> | 2021-09-17 17:17:20 -0700 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2023-11-25 02:24:43 +0000 |
| commit | 7276d4b4e87bfdc9b609f481a734e39c499de253 (patch) | |
| tree | 1669a12e27d1af77f3318d8a3c4987c8efa160fb /test | |
| parent | fb7add495454322ea00efa7549feb957cb1ca538 (diff) | |
[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
Diffstat (limited to 'test')
| -rw-r--r-- | test/resolv/test_dns.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/resolv/test_dns.rb b/test/resolv/test_dns.rb index c0400b4bb8..63ab66657c 100644 --- a/test/resolv/test_dns.rb +++ b/test/resolv/test_dns.rb @@ -630,4 +630,28 @@ class TestResolvDNS < Test::Unit::TestCase end assert_raise(Resolv::ResolvError) { dns.each_name('example.com') } end + + def test_unreachable_server + unreachable_ip = '127.0.0.1' + sock = UDPSocket.new + sock.connect(unreachable_ip, 53) + begin + sock.send('1', 0) + rescue Errno::ENETUNREACH, Errno::EHOSTUNREACH + else + omit('cannot test unreachable server, as IP used is reachable') + end + + config = { + :nameserver => [unreachable_ip], + :search => ['lan'], + :ndots => 1 + } + r = Resolv.new([Resolv::DNS.new(config)]) + assert_equal([], r.getaddresses('www.google.com')) + + config[:raise_timeout_errors] = true + r = Resolv.new([Resolv::DNS.new(config)]) + assert_raise(Resolv::ResolvError) { r.getaddresses('www.google.com') } + end end |
