Skip to content

Commit

Permalink
Make Resolv::DNS#each_name accept Resolv::IPv{4,6} arguments
Browse files Browse the repository at this point in the history
These arguments were previously documented as supported, but not
actually supported.

Patch from Toru Iwase

Fixes [Bug #15900]
  • Loading branch information
jeremyevans committed Jun 9, 2019
1 parent a432c01 commit 6650899
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/resolv.rb
Expand Up @@ -451,6 +451,8 @@ def each_name(address)
case address
when Name
ptr = address
when IPv4, IPv6
ptr = address.to_name
when IPv4::Regex
ptr = IPv4.create(address).to_name
when IPv6::Regex
Expand Down
24 changes: 24 additions & 0 deletions test/resolv/test_dns.rb
Expand Up @@ -265,4 +265,28 @@ def test_no_fd_leak_connected
def test_no_fd_leak_unconnected
assert_no_fd_leak {Resolv::DNS.new}
end

def test_each_name
dns = Resolv::DNS.new
def dns.each_resource(name, typeclass)
yield typeclass.new(name)
end

dns.each_name('127.0.0.1') do |ptr|
assert_equal('1.0.0.127.in-addr.arpa', ptr.to_s)
end
dns.each_name(Resolv::IPv4.create('127.0.0.1')) do |ptr|
assert_equal('1.0.0.127.in-addr.arpa', ptr.to_s)
end
dns.each_name('::1') do |ptr|
assert_equal('1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa', ptr.to_s)
end
dns.each_name(Resolv::IPv6.create('::1')) do |ptr|
assert_equal('1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa', ptr.to_s)
end
dns.each_name(Resolv::DNS::Name.create('1.0.0.127.in-addr.arpa.')) do |ptr|
assert_equal('1.0.0.127.in-addr.arpa', ptr.to_s)
end
assert_raise(Resolv::ResolvError) { dns.each_name('example.com') }
end
end

0 comments on commit 6650899

Please sign in to comment.