Issue #16439 has been updated by jeremyevans0 (Jeremy Evans).


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 for=
m, 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/31=
61

----------------------------------------
Bug #16439: Resolv::DNS: timeouts if multiple IPv6 name servers are given a=
nd address contains leading zero
https://bugs.ruby-lang.org/issues/16439#change-85892

* Author: jmr (Jan-Martin R=E4mer)
* Status: Open
* Priority: Normal
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
Hi,

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.

Example resolv.conf:
nameserver 2001:0db8::0001:1
nameserver 2001:0db8::0002:1

This is caused by a mismatch in representation of the address: Requester::s=
ender_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.

Best regards,
Jan-Martin


---Files--------------------------------
resolv.rb.patch (397 Bytes)


-- =

https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=3Dunsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>