Age | Commit message (Collapse) | Author |
|
mutable constants can't be shared across ractors; this changes that design to define the required variables as constants on the Resource class, which makes them reachable using ractors; the ClassHash is kept in order not to break integrations relying on its existence, but under the hood it's doing the same thing
https://github.com/ruby/resolv/commit/639c01dc7f
|
|
https://github.com/ruby/resolv/commit/afb57f40a1
|
|
https://github.com/ruby/resolv/commit/3ecfce3626
|
|
https://github.com/ruby/resolv/commit/de95f557b0
|
|
On platforms where ephemeral port randomization is implemented, the
same randomization is not needed in the ruby library layer.
Fixes https://github.com/ruby/resolv/pull/63.
https://github.com/ruby/resolv/commit/45e1b563c0
|
|
If a positional argument is provided, the use_ipv6 keyword
option is ignored:
```ruby
Resolv.new([Resolv::DNS.new], use_ipv6: false)
```
Issue a warning in this case.
Currently, you have to pass a positional hash argument to set
the DNS config. However, after support for the use_ipv6 keyword
argument is removed, you will be able to pass either a positional
hash or keyword arguments. Code that was just specifying the
use_ipv6 keyword optional will still work correctly in that case.
https://github.com/ruby/resolv/commit/5ff9dda991
|
|
https://github.com/ruby/resolv/commit/cb4b335034
|
|
https://github.com/ruby/resolv/commit/324c355eb7
|
|
https://github.com/ruby/resolv/commit/c4837aae9b
|
|
initialized
Notes:
Merged: https://github.com/ruby/ruby/pull/11828
|
|
AAAA over A is standards track behaviour as per RFC 6724.
Notes:
Merged: https://github.com/ruby/ruby/pull/2024
|
|
[RFC7766] Section 5 recommends stub resolvers to reuse open TCP
connections to a nameserver.
[RFC7766]: https://datatracker.ietf.org/doc/html/rfc7766
https://github.com/ruby/resolv/commit/9bf1b08f5c
|
|
Under the following conditions the exception
`Resolv::DNS::Requester::RequestError: host/port don't match` is raised:
- Multiple nameservers are configured for Resolv::DNS
- A nameserver falls back from UDP to TCP
- TCP request hits Resolv::DNS timeout
- Resolv::DNS retries the next nameserver
More details here https://bugs.ruby-lang.org/issues/8285
https://github.com/ruby/resolv/commit/7d524df80e
Co-authored-by: Julian Mehnle <[email protected]>
|
|
https://github.com/ruby/resolv/commit/44ae1e8531
|
|
This patch implements handling of CAA resource records defined by [RFC8659].
- There are no known deployment of CAA records outside of IN (Internet),
but the RFC does not state that CAA records are class-specific.
Thus `CAA` class is defined as a class-independent RRType.
- `CAA` class stores `flags` field (a 1-octet bitset) as an Integer.
In this way it's easier to ensure the encoded RR is in the valid wire format.
[RFC8659]: https://datatracker.ietf.org/doc/html/rfc8659
https://github.com/ruby/resolv/commit/cfc4de75e3
Co-authored-by: aeris <[email protected]>
|
|
https://github.com/ruby/resolv/commit/081b8df705
|
|
https://github.com/ruby/resolv/commit/fa812d6454
|
|
https://github.com/ruby/resolv/commit/5dfdcfb7c7
|
|
https://github.com/ruby/resolv/commit/22153c2a45
|
|
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
|
|
Resolv::ResolvError
This allows to differentiate a timeout from an NXDOMAIN response.
Fixes [Bug #18151]
https://github.com/ruby/resolv/commit/c0e5abab76
|
|
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
|
|
(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
|
|
(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 <[email protected]>
|
|
(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]
> This patch implements SVCB and HTTPS resource record types defined in
> [RFC 9460].
>
> The RR types are now supported by many server implementations including
> BIND, unbound, PowerDNS, and Knot DNS. Major browsers such as Chrome,
> Edge, and Safari have started to query HTTPS records, with the records
> gradually adopted by websites. Also, SVCB is actually deployed in the
> public DNS resolvers such as Cloudflare DNS and Google Public DNS for
> [DDR].
>
> With such wide adoption, we have plenty of real-world use cases, and
> it is unlikely the wire format will change further in an incompatible
> way. It is time to implement them in the client libraries!
>
> # Rationale for proposed API
>
> ## `Resolv::DNS::Resource::IN::ServiceBinding`
>
> This is an abstract class for SVCB-compatible RR types.
> SVCB-compatible RR types, as defined in the Draft, shares the wire
> format and the semantics of their RDATA fields with SVCB to allow
> implementations to share the processing of these RR types. So we do
> so.
>
> The interface of this class is straightforward: It has three
> attributes `priority`, `target`, and `params`, which correspond the
> RDATA fields SvcPriority, TargetName, and SvcParams, resp.
>
> SVCB RR type is defined specifically within IN class. Thus, this
> class is placed in the `Resolv::DNS::Resource::IN` namespace.
>
> ## `Resolv::DNS::Resource::IN::SVCB`, `Resolv::DNS::Resource::IN::HTTPS`
>
> Just inherits ServiceBinding class.
>
> ## `Resolv::DNS::SvcParam`
>
> This class represents a pair of a SvcParamKey and a SvcParamValue.
> Aligned with the design of `Resolv::DNS::Resource`, each SvcParamKey
> has its own subclass of `Resolv::DNS::SvcParam`.
>
> ## `Resolv::DNS::SvcParam::Generic`
>
> This is an abstract class representing a SvcParamKey that is unknown
> to this library. `Generic.create(key)` dynamically defines its
> subclass for specific `key`. E.g., `Generic.create(667)` will define
> `Generic::Key667`.
>
> This class holds SvcParamValue in its wire format.
>
> SvcParam with an unknown SvcParamKey will be decoded as a subclass of
> this class. Also, users of this library can generate a non-supported
> SvcParam if they know its wire format.
>
> ## `Resolv::DNS::SvcParams`
>
> This is conceptually a set of `SvcParam`s, whose elements have the
> unique SvcParamKeys. It behaves like a set, and for convenience
> provides indexing by SvcParamKey.
>
> - `#initialize(params)` takes an Enumerable of `SvcParam`s as the
> initial content. If it contains `SvcParam`s with the duplicate key,
> the one that appears last takes precedence.
> - `#[](key)` fetches the `SvcParam` with the given key. The key can be
> specified by its name (e.g., `:alpn`) or number (e.g., `1`).
> - `#add(param)` adds a `SvcParam` to the set. If the set already has a
> `SvcParam` with the same key, it will be replaced.
> - `#delete(key)` deletes a `SvcParam` by its key and returns it. The key
> 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
|
|
(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 <[email protected]>
|
|
Fix https://bugs.ruby-lang.org/issues/19621
https://github.com/ruby/resolv/commit/7faaa78847
|
|
https://github.com/ruby/resolv/commit/6ab2385e89
|
|
[RFC2782] prohibits use of name compression for the target host name
in the RDATA of a SRV record.
[RFC2782]: https://datatracker.ietf.org/doc/rfc2782/
Closes: https://github.com/ruby/resolv/issues/29
https://github.com/ruby/resolv/commit/ac85724e17
|
|
Implements [Feature #17524]
https://github.com/ruby/resolv/commit/993a1a374f
|
|
This is a follow up for commit 33fb966197f1 ("Remove sender/message_id
pair after response received in resolv", 2020-09-11).
As the @senders instance variable is also used for tracking transaction
ID allocation, simply removing an entry without releasing the ID would
eventually deplete the ID space and cause
Resolv::DNS.allocate_request_id to hang.
It seems the intention of the code was to check that the received DNS
message is actually the response for the question made within the method
earlier. Let's have it actually do so.
[Bug #12838] https://bugs.ruby-lang.org/issues/12838
[Bug #17748] https://bugs.ruby-lang.org/issues/17748
https://github.com/ruby/resolv/commit/53ca9c9209
|
|
|
|
|
|
Now that it should work correctly, test that every address returned
by Socket.ip_address_list is resolvable.
Socket works with IPv6 link local addresses, and ipaddr now does
as well, so I think resolv should support them.
Fixes [Bug #17112]
Notes:
Merged: https://github.com/ruby/ruby/pull/3452
|
|
Once a response for a given DNS request has been received (which
requires a matching message id), the [sender, message_id] pair
should be removed from the list of valid senders. This makes it
so duplicate responses from the same sender are ignored.
Fixes [Bug #12838]
Notes:
Merged: https://github.com/ruby/ruby/pull/3536
|
|
Resolv::DNS::Requester::UnconnectedUDP#sender
Otherwise, if the IP address given is not in canonical form, it
won't match, and Resolv will ignore it.
Fixes [Bug #16439]
Notes:
Merged: https://github.com/ruby/ruby/pull/3161
|
|
This removes the related tests, and puts the related specs behind
version guards. This affects all code in lib, including some
libraries that may want to support older versions of Ruby.
Notes:
Merged: https://github.com/ruby/ruby/pull/2476
|
|
Original patch from Andy Grimm.
Fixes [Bug #10747]
Notes:
Merged: https://github.com/ruby/ruby/pull/2587
|
|
Reported by chucke (Tiago Cardoso).
Patch by jeremyevans0 (Jeremy Evans).
[Bug #14612]
|
|
|
|
These arguments were previously documented as supported, but not
actually supported.
Patch from Toru Iwase
Fixes [Bug #15900]
|
|
* lib/resolv.rb (Resolv::DNS.rangerand): rand and random_number
accept a Range.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* lib/resolv.rb (UnconnectedUDP#lazy_initialize): store new
sockets before binding, so the sockets get closed when the
requester is closing.
* lib/resolv.rb (ConnectedUDP#lazy_initialize): ditto.
* lib/resolv.rb (UnconnectedUDP#close): synchronize to get rid of
race condition.
* lib/resolv.rb (ConnectedUDP#close): ditto.
[ruby-core:85901] [Bug #14571]
From: quixoten (Devin Christensen) <[email protected]>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* lib/resolv.rb (Resolv::Hosts::DefaultFileName): fallback to NUL
device when Win32::Resolv.get_hosts_path() returned nil, to get
rid of TypeError in lazy_initialize.
[ruby-core:84907] [Bug #14369] [Fix GH-1791]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* lib/resolv.rb (each_address): use safe navigation operator to
avoid extra hash lookups, as well as each_name since r56890.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
This test just tests MDNS#each_address method.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* lib/resolv.rb (Resolv::Config.parse_resolv_conf): fixed
potential command injection by use of Kernel#open.
[ruby-core:84347] [Bug #14205]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* resolv.rb (Resolv::Hosts#lazy_initialize): fixed potential
command Injection in Hosts::new() by use of Kernel#open.
[Fix GH-1777] [ruby-core:84347] [Bug #14205]
From: Drigg3r <[email protected]>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
address.
https://github.com/ruby/ruby/pull/1425
Patch by @elct9620 [fix GH-1484]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|