8000 Default to system nameservers if a Resolver is initialized without an… · socketry/async-dns@99ffdd5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 99ffdd5

Browse files
authored
Default to system nameservers if a Resolver is initialized without any. (#30)
1 parent 1fa7784 commit 99ffdd5

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Here is a simple example showing how to use the resolver:
2626

2727
``` ruby
2828
Async::Reactor.run do
29-
resolver = Async::DNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])
29+
resolver = Async::DNS::Resolver.new()
3030

3131
addresses = resolver.addresses_for("www.google.com.")
3232

@@ -35,6 +35,16 @@ end
3535
# [#<Resolv::IPv4 202.124.127.240>, #<Resolv::IPv4 202.124.127.216>, #<Resolv::IPv4 202.124.127.223>, #<Resolv::IPv4 202.124.127.227>, #<Resolv::IPv4 202.124.127.234>, #<Resolv::IPv4 202.124.127.230>, #<Resolv::IPv4 202.124.127.208>, #<Resolv::IPv4 202.124.127.249>, #<Resolv::IPv4 202.124.127.219>, #<Resolv::IPv4 202.124.127.218>, #<Resolv::IPv4 202.124.127.212>, #<Resolv::IPv4 202.124.127.241>, #<Resolv::IPv4 202.124.127.238>, #<Resolv::IPv4 202.124.127.245>, #<Resolv::IPv4 202.124.127.251>, #<Resolv::IPv4 202.124.127.229>]
3636
```
3737

38+
You can also specify custom DNS servers:
39+
40+
``` ruby
41+
resolver = Async::DNS::Resolver.new(Async::DNS::System.standard_connections(['8.8.8.8']))
42+
43+
# or
44+
45+
resolver = Async::DNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])
46+
```
47+
3848
### Server
3949

4050
Here is a simple example showing how to use the server:

lib/async/dns/resolver.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
# THE SOFTWARE.
2020

2121
require_relative 'handler'
22+
require_relative 'system'
2223

2324
require 'securerandom'
2425
require 'async'
@@ -46,8 +47,8 @@ class Resolver
4647
# Servers are specified in the same manor as options[:listen], e.g.
4748
# [:tcp/:udp, address, port]
4849
# In the case of multiple servers, they will be checked in sequence.
49-
def initialize(endpoints, origin: nil, logger: Console.logger, timeout: DEFAULT_TIMEOUT)
50-
@endpoints = endpoints
50+
def initialize(endpoints = nil, origin: nil, logger: Console.logger, timeout: DEFAULT_TIMEOUT)
51+
@endpoints = endpoints || System.nameservers
5152

5253
@origin = origin
5354
@logger = logger

spec/async/dns/resolver_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,13 @@
101101

102102
expect(addresses.size).to be > 0
103103
end
104+
105+
it "should default to system resolvers" do
106+
resolver = Async::DNS::Resolver.new()
107+
108+
response = resolver.query('google.com')
109+
110+
expect(response.class).to be == Async::DNS::Message
111+
expect(response.answer.size).to be > 0
112+
end
104113
end

0 commit comments

Comments
 (0)
0