New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Collect all DNS sections by calling to each_resource instead of each_answer #3886
Conversation
…answer. 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 ! |
@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 9.1.3.0. If they don't respond for 9.1.4.0 and we're still happy with this change, we'll just merge it. |
Thank you again @headius. |
MRI finally merged your fix! I've gone with their patch (yours sans whitespace changes) in 9187c5e. |
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 ofresponses: Authority and Additional. Iterating through
Message#each_resource
allows us to retrieveall information from the
Message
object.This is specially important if, for example, we are trying to retrieve nameservers for a certain domain.
nil
is returned. This, in a terminal fashion is equivalent to:There is indeed a response, but in the authority section, that is right now not collected by
Resolv::DNS::getresource(s)
.