<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/lib/resolv.rb, branch v3_3_11</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Bump up resolv-0.3.1 for Ruby 3.3</title>
<updated>2025-07-19T01:19:07+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2025-07-08T07:39:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=111a49e77e4b05a21bb37942ea2cfc254daa8d92'/>
<id>111a49e77e4b05a21bb37942ea2cfc254daa8d92</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/resolv] Bump up 0.3.0</title>
<updated>2023-12-13T06:11:21+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2023-12-13T06:04:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5f5f8dbbb6a7861e9c591ad09149944a5adf5a71'/>
<id>5f5f8dbbb6a7861e9c591ad09149944a5adf5a71</id>
<content type='text'>
https://github.com/ruby/resolv/commit/22153c2a45
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/resolv/commit/22153c2a45
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/resolv] Support a :use_ipv6 option to Resolv#initialize</title>
<updated>2023-11-25T19:40:08+00:00</updated>
<author>
<name>Jeremy Evans</name>
<email>code@jeremyevans.net</email>
</author>
<published>2019-08-27T03:30:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=87c3deacf431dd1ee4538ba15db54f884fa8a918'/>
<id>87c3deacf431dd1ee4538ba15db54f884fa8a918</id>
<content type='text'>
When set, supports returning IPv6 results even if there is no
public IPv6 address for the system.

Implements Ruby Feature #14922

https://github.com/ruby/resolv/commit/09d141de38
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When set, supports returning IPv6 results even if there is no
public IPv6 address for the system.

Implements Ruby Feature #14922

https://github.com/ruby/resolv/commit/09d141de38
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/resolv] Support a :raise_timeout_errors option to raise timeouts as Resolv::ResolvError</title>
<updated>2023-11-25T02:24:43+00:00</updated>
<author>
<name>Jeremy Evans</name>
<email>code@jeremyevans.net</email>
</author>
<published>2021-09-18T00:17:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7276d4b4e87bfdc9b609f481a734e39c499de253'/>
<id>7276d4b4e87bfdc9b609f481a734e39c499de253</id>
<content type='text'>
This allows to differentiate a timeout from an NXDOMAIN response.

Fixes [Bug #18151]

https://github.com/ruby/resolv/commit/c0e5abab76
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows to differentiate a timeout from an NXDOMAIN response.

Fixes [Bug #18151]

https://github.com/ruby/resolv/commit/c0e5abab76
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/resolv] Fix the fallback from UDP to TCP due to message truncation</title>
<updated>2023-11-24T19:17:19+00:00</updated>
<author>
<name>Jeremy Evans</name>
<email>code@jeremyevans.net</email>
</author>
<published>2021-03-08T23:28:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=974d18fd0c13bd19120cad70187f5b646c901dff'/>
<id>974d18fd0c13bd19120cad70187f5b646c901dff</id>
<content type='text'>
If truncation is detected, return immediately from decode so that
the UDP connection can be retried with TCP, instead of failing to
decode due to trying to decode a truncated response.

Fixes [Bug #13513]

https://github.com/ruby/resolv/commit/0de996dbca
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If truncation is detected, return immediately from decode so that
the UDP connection can be retried with TCP, instead of failing to
decode due to trying to decode a truncated response.

Fixes [Bug #13513]

https://github.com/ruby/resolv/commit/0de996dbca
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/resolv] Catch EPROTONOSUPPORT as a sign of no IPv6 as well</title>
<updated>2023-11-24T04:06:25+00:00</updated>
<author>
<name>KJ Tsanaktsidis</name>
<email>kj@kjtsanaktsidis.id.au</email>
</author>
<published>2023-11-24T04:06:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=02cc9d48f1958e8f22757116358cf5863cb109f4'/>
<id>02cc9d48f1958e8f22757116358cf5863cb109f4</id>
<content type='text'>
(https://github.com/ruby/resolv/pull/41)

If IPv6 is disabled inside a freebsd jail, it seems this returns
EPROTONOSUPPORT and not EAFNOSUPPORT. In both cases, we should simply
try some other listed DNS servers.

Fixes [Bug #19928] https://bugs.ruby-lang.org/issues/19928

https://github.com/ruby/resolv/commit/5e2d48708b
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(https://github.com/ruby/resolv/pull/41)

If IPv6 is disabled inside a freebsd jail, it seems this returns
EPROTONOSUPPORT and not EAFNOSUPPORT. In both cases, we should simply
try some other listed DNS servers.

Fixes [Bug #19928] https://bugs.ruby-lang.org/issues/19928

https://github.com/ruby/resolv/commit/5e2d48708b
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/resolv]  Implement dohpath SvcParam</title>
<updated>2023-11-24T01:42:08+00:00</updated>
<author>
<name>Kasumi Hanazuki</name>
<email>kasumi@rollingapple.net</email>
</author>
<published>2023-11-24T01:42:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e3b485213d06a5d9a07650174a2be9e20cb39e57'/>
<id>e3b485213d06a5d9a07650174a2be9e20cb39e57</id>
<content type='text'>
(https://github.com/ruby/resolv/pull/33)

* Implement dohpath SvcParam [RFC 9461]

This patch implements "dohpath" SvcParam proposed in
[draft-ietf-add-svcb-dns-08]. This parameter specifies a URI template
for the :path used in DNS-over-HTTPS requests.

"dohpath" is employed by [DDR], also a to-be-published Proposed Standard
that specifies how to upgrade DNS transport to a more secure one, i.d.,
DNS-over-TLS or DNS-over-HTTPS. DDR is deployed in the public DNS
resolvers including Cloudflare DNS, Google Public DNS, and Quad9.

[RFC 9461]: https://datatracker.ietf.org/doc/rfc9461/
[DDR]: https://datatracker.ietf.org/doc/draft-ietf-add-ddr/

https://github.com/ruby/resolv/commit/da9c023539

Co-authored-by: Sorah Fukumori &lt;her@sorah.jp&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(https://github.com/ruby/resolv/pull/33)

* Implement dohpath SvcParam [RFC 9461]

This patch implements "dohpath" SvcParam proposed in
[draft-ietf-add-svcb-dns-08]. This parameter specifies a URI template
for the :path used in DNS-over-HTTPS requests.

"dohpath" is employed by [DDR], also a to-be-published Proposed Standard
that specifies how to upgrade DNS transport to a more secure one, i.d.,
DNS-over-TLS or DNS-over-HTTPS. DDR is deployed in the public DNS
resolvers including Cloudflare DNS, Google Public DNS, and Quad9.

[RFC 9461]: https://datatracker.ietf.org/doc/rfc9461/
[DDR]: https://datatracker.ietf.org/doc/draft-ietf-add-ddr/

https://github.com/ruby/resolv/commit/da9c023539

Co-authored-by: Sorah Fukumori &lt;her@sorah.jp&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/resolv] Implement SVCB and HTTPS RRs</title>
<updated>2023-11-24T01:35:33+00:00</updated>
<author>
<name>Kasumi Hanazuki</name>
<email>kasumi@rollingapple.net</email>
</author>
<published>2023-11-24T01:35:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=608a518b42736edc6533a120a240ff92ca4a8a60'/>
<id>608a518b42736edc6533a120a240ff92ca4a8a60</id>
<content type='text'>
(https://github.com/ruby/resolv/pull/32)

* Add MessageDecoder#get_list

This method repeats yielding until all the data upto the current limit
is consumed, and then returns an Array containig the block results.

* Implement SVCB and HTTPS RRs [RFC 9460]

&gt; This patch implements SVCB and HTTPS resource record types defined in
&gt; [RFC 9460].
&gt;
&gt; The RR types are now supported by many server implementations including
&gt; BIND, unbound, PowerDNS, and Knot DNS. Major browsers such as Chrome,
&gt; Edge, and Safari have started to query HTTPS records, with the records
&gt; gradually adopted by websites. Also, SVCB is actually deployed in the
&gt; public DNS resolvers such as Cloudflare DNS and Google Public DNS for
&gt; [DDR].
&gt;
&gt; With such wide adoption, we have plenty of real-world use cases, and
&gt; it is unlikely the wire format will change further in an incompatible
&gt; way. It is time to implement them in the client libraries!
&gt;
&gt; # Rationale for proposed API
&gt;
&gt; ## `Resolv::DNS::Resource::IN::ServiceBinding`
&gt;
&gt; This is an abstract class for SVCB-compatible RR types.
&gt; SVCB-compatible RR types, as defined in the Draft, shares the wire
&gt; format and the semantics of their RDATA fields with SVCB to allow
&gt; implementations to share the processing of these RR types. So we do
&gt; so.
&gt;
&gt; The interface of this class is straightforward: It has three
&gt; attributes `priority`, `target`, and `params`, which correspond the
&gt; RDATA fields SvcPriority, TargetName, and SvcParams, resp.
&gt;
&gt; SVCB RR type is defined specifically within IN class. Thus, this
&gt; class is placed in the `Resolv::DNS::Resource::IN` namespace.
&gt;
&gt; ## `Resolv::DNS::Resource::IN::SVCB`, `Resolv::DNS::Resource::IN::HTTPS`
&gt;
&gt; Just inherits ServiceBinding class.
&gt;
&gt; ## `Resolv::DNS::SvcParam`
&gt;
&gt; This class represents a pair of a SvcParamKey and a SvcParamValue.
&gt; Aligned with the design of `Resolv::DNS::Resource`, each SvcParamKey
&gt; has its own subclass of `Resolv::DNS::SvcParam`.
&gt;
&gt; ## `Resolv::DNS::SvcParam::Generic`
&gt;
&gt; This is an abstract class representing a SvcParamKey that is unknown
&gt; to this library. `Generic.create(key)` dynamically defines its
&gt; subclass for specific `key`. E.g., `Generic.create(667)` will define
&gt; `Generic::Key667`.
&gt;
&gt; This class holds SvcParamValue in its wire format.
&gt;
&gt; SvcParam with an unknown SvcParamKey will be decoded as a subclass of
&gt; this class. Also, users of this library can generate a non-supported
&gt; SvcParam if they know its wire format.
&gt;
&gt; ## `Resolv::DNS::SvcParams`
&gt;
&gt; This is conceptually a set of `SvcParam`s, whose elements have the
&gt; unique SvcParamKeys. It behaves like a set, and for convenience
&gt; provides indexing by SvcParamKey.
&gt;
&gt; - `#initialize(params)` takes an Enumerable of `SvcParam`s as the
&gt;   initial content. If it contains `SvcParam`s with the duplicate key,
&gt;   the one that appears last takes precedence.
&gt; - `#[](key)` fetches the `SvcParam` with the given key. The key can be
&gt;   specified by its name (e.g., `:alpn`) or number (e.g., `1`).
&gt; - `#add(param)` adds a `SvcParam` to the set. If the set already has a
&gt;   `SvcParam` with the same key, it will be replaced.
&gt; - `#delete(key)` deletes a `SvcParam` by its key and returns it. The key
&gt;   can be specified by its name or number.

* Update comments referring to draft-ietf-dnsop-svcb-https-12

Published as RFC 9460. https://datatracker.ietf.org/doc/rfc9460/

[draft-ietf-dnsop-svcb-https-12]: https://datatracker.ietf.org/doc/draft-ietf-dnsop-svcb-https/12/
[RFC 9460]: https://datatracker.ietf.org/doc/rfc9460/
[DDR]: https://datatracker.ietf.org/doc/draft-ietf-add-ddr/

https://github.com/ruby/resolv/commit/b3ced7f039
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(https://github.com/ruby/resolv/pull/32)

* Add MessageDecoder#get_list

This method repeats yielding until all the data upto the current limit
is consumed, and then returns an Array containig the block results.

* Implement SVCB and HTTPS RRs [RFC 9460]

&gt; This patch implements SVCB and HTTPS resource record types defined in
&gt; [RFC 9460].
&gt;
&gt; The RR types are now supported by many server implementations including
&gt; BIND, unbound, PowerDNS, and Knot DNS. Major browsers such as Chrome,
&gt; Edge, and Safari have started to query HTTPS records, with the records
&gt; gradually adopted by websites. Also, SVCB is actually deployed in the
&gt; public DNS resolvers such as Cloudflare DNS and Google Public DNS for
&gt; [DDR].
&gt;
&gt; With such wide adoption, we have plenty of real-world use cases, and
&gt; it is unlikely the wire format will change further in an incompatible
&gt; way. It is time to implement them in the client libraries!
&gt;
&gt; # Rationale for proposed API
&gt;
&gt; ## `Resolv::DNS::Resource::IN::ServiceBinding`
&gt;
&gt; This is an abstract class for SVCB-compatible RR types.
&gt; SVCB-compatible RR types, as defined in the Draft, shares the wire
&gt; format and the semantics of their RDATA fields with SVCB to allow
&gt; implementations to share the processing of these RR types. So we do
&gt; so.
&gt;
&gt; The interface of this class is straightforward: It has three
&gt; attributes `priority`, `target`, and `params`, which correspond the
&gt; RDATA fields SvcPriority, TargetName, and SvcParams, resp.
&gt;
&gt; SVCB RR type is defined specifically within IN class. Thus, this
&gt; class is placed in the `Resolv::DNS::Resource::IN` namespace.
&gt;
&gt; ## `Resolv::DNS::Resource::IN::SVCB`, `Resolv::DNS::Resource::IN::HTTPS`
&gt;
&gt; Just inherits ServiceBinding class.
&gt;
&gt; ## `Resolv::DNS::SvcParam`
&gt;
&gt; This class represents a pair of a SvcParamKey and a SvcParamValue.
&gt; Aligned with the design of `Resolv::DNS::Resource`, each SvcParamKey
&gt; has its own subclass of `Resolv::DNS::SvcParam`.
&gt;
&gt; ## `Resolv::DNS::SvcParam::Generic`
&gt;
&gt; This is an abstract class representing a SvcParamKey that is unknown
&gt; to this library. `Generic.create(key)` dynamically defines its
&gt; subclass for specific `key`. E.g., `Generic.create(667)` will define
&gt; `Generic::Key667`.
&gt;
&gt; This class holds SvcParamValue in its wire format.
&gt;
&gt; SvcParam with an unknown SvcParamKey will be decoded as a subclass of
&gt; this class. Also, users of this library can generate a non-supported
&gt; SvcParam if they know its wire format.
&gt;
&gt; ## `Resolv::DNS::SvcParams`
&gt;
&gt; This is conceptually a set of `SvcParam`s, whose elements have the
&gt; unique SvcParamKeys. It behaves like a set, and for convenience
&gt; provides indexing by SvcParamKey.
&gt;
&gt; - `#initialize(params)` takes an Enumerable of `SvcParam`s as the
&gt;   initial content. If it contains `SvcParam`s with the duplicate key,
&gt;   the one that appears last takes precedence.
&gt; - `#[](key)` fetches the `SvcParam` with the given key. The key can be
&gt;   specified by its name (e.g., `:alpn`) or number (e.g., `1`).
&gt; - `#add(param)` adds a `SvcParam` to the set. If the set already has a
&gt;   `SvcParam` with the same key, it will be replaced.
&gt; - `#delete(key)` deletes a `SvcParam` by its key and returns it. The key
&gt;   can be specified by its name or number.

* Update comments referring to draft-ietf-dnsop-svcb-https-12

Published as RFC 9460. https://datatracker.ietf.org/doc/rfc9460/

[draft-ietf-dnsop-svcb-https-12]: https://datatracker.ietf.org/doc/draft-ietf-dnsop-svcb-https/12/
[RFC 9460]: https://datatracker.ietf.org/doc/rfc9460/
[DDR]: https://datatracker.ietf.org/doc/draft-ietf-add-ddr/

https://github.com/ruby/resolv/commit/b3ced7f039
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/resolv] IPv6: update to_s method to be RFC5952 compliant</title>
<updated>2023-11-22T10:35:36+00:00</updated>
<author>
<name>John Bond</name>
<email>b4ldr@users.noreply.github.com</email>
</author>
<published>2023-11-22T10:35:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9e24d747ffbc1040d93ac53bff0c1ef0914419c8'/>
<id>9e24d747ffbc1040d93ac53bff0c1ef0914419c8</id>
<content type='text'>
(https://github.com/ruby/resolv/pull/25)

* IPv6: update to_s method to be RFC5952 compliant

I noticed that the resolv library does not honour RFC 5952 Section 4.2.2.
in relation to textural representation of ipv6 addresses:

   The symbol "::" MUST NOT be used to shorten just one 16-bit 0 field.
   For example, the representation 2001:db8:0:1:1:1:1:1 is correct, but
   2001:db8::1:1:1:1:1 is not correct.

Fixes https://github.com/ruby/resolv/pull/24

https://github.com/ruby/resolv/commit/5efcd6ed70

Co-authored-by: Sorah Fukumori &lt;sora134@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(https://github.com/ruby/resolv/pull/25)

* IPv6: update to_s method to be RFC5952 compliant

I noticed that the resolv library does not honour RFC 5952 Section 4.2.2.
in relation to textural representation of ipv6 addresses:

   The symbol "::" MUST NOT be used to shorten just one 16-bit 0 field.
   For example, the representation 2001:db8:0:1:1:1:1:1 is correct, but
   2001:db8::1:1:1:1:1 is not correct.

Fixes https://github.com/ruby/resolv/pull/24

https://github.com/ruby/resolv/commit/5efcd6ed70

Co-authored-by: Sorah Fukumori &lt;sora134@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/resolv] Prefer `Array#concat` over `#+=` on `Array`</title>
<updated>2023-04-28T11:29:02+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2023-04-28T11:26:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7ba37cb7aad715b2927a6fdad89185df92ca8f23'/>
<id>7ba37cb7aad715b2927a6fdad89185df92ca8f23</id>
<content type='text'>
Fix https://bugs.ruby-lang.org/issues/19621

https://github.com/ruby/resolv/commit/7faaa78847
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix https://bugs.ruby-lang.org/issues/19621

https://github.com/ruby/resolv/commit/7faaa78847
</pre>
</div>
</content>
</entry>
</feed>
