Resolv::DNS: timeouts if multiple IPv6 name servers are given and address contains leading zero
Resolv::DNS does not return any results under those conditions:
- there are at least two name servers (in /etc/resolv.conf).
- The name servers have IPv6 addresses containing leading zeros.
This is caused by a mismatch in representation of the address: Requester::sender_for compares the address of the answering server (e.g. 2001:0db8::1:1) with the address the request was sent to (e.g. 2001:0db8::0001:1).
This can be fixed by stripping leading zeros from the sender's address, as done in the attached patch.
Updated by jeremyevans0 (Jeremy Evans) about 2 years ago
This isn't just a problem for IPv6, it happens for IPv4 as well (e.g. 127.0.0.01). It will happen in any case where the input is not in canonical form, where canonical form is the form that
Addrinfo#ip_address gives you. I've added a pull request to fix this: https://github.com/ruby/ruby/pull/3161
Updated by jeremyevans (Jeremy Evans) about 2 years ago
- Status changed from Open to Closed