Disclaimer: same pull request on mruby impl (ruby/ruby#797), and bug open (https://bugs.ruby-lang.org/issues/12372). Not sure if I should report here a bug for the stdlib. For completeness:
A call to Message#each_answer does only include answers, however there are also two more kinds of
responses: Authority and Additional. Iterating through Message#each_resource allows us to retrieve
all information from the Message object.
This is specially important if, for example, we are trying to retrieve nameservers for a certain domain.
dns = Resolv::DNS.new(:nameserver => ['18.104.22.168']) # a0.org.afilias-nst.info
=> #<Resolv::DNS:0x3578436e ...>
puts dns.getresources('jruby.org', Resolv::DNS::Resource::IN::NS).map(&:name)
nil is returned. This, in a terminal fashion is equivalent to:
~ > dig ns jruby.org @a0.org.afilias-nst.info
;; AUTHORITY SECTION:
jruby.org. 86400 IN NS ns25.domaincontrol.com.
jruby.org. 86400 IN NS ns26.domaincontrol.com.
There is indeed a response, but in the authority section, that is right now not collected by Resolv::DNS::getresource(s).
Collect all DNS sections by calling to each_resource instead of each_…
When an authoritative server responds only on the authoritative section of the
DNS response, Resolv::DNS::getresource(s) interprets an empty response.
@ereslibre Wow, thanks for the footwork on this one!
Our stdlib is a lightly-patched duplicate of MRI's, but we generally don't patch stdlib unilaterally, so we'll wait to see if MRI accepts this. When that happens, ping again and we'll be happy to merge this into JRuby.
One minor nit: there's unrelated whitespace changes in here. Can you eliminate those?
@headius Amazing timing. Of course, I will get rid of those space changes, sorry ! Thanks for your wonderful work !
Remove whitespace changes
@ereslibre I pinged the MRI issue to see if we can get some movement.
Thank you @headius ❤️
Doesn't look like MRI's going to get back to us in time for 22.214.171.124. If they don't respond for 126.96.36.199 and we're still happy with this change, we'll just merge it.
Thank you again @headius.
Incorporate MRI's fix for #3886.
MRI finally merged your fix! I've gone with their patch (yours sans whitespace changes) in 9187c5e.
Incorporate MRI fix for jruby/jruby#3886.