async-dns 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3223ab2c74c5fc592a4f37294d126cbfe9ad8ca15f210d517b5676b63bf92f81
4
- data.tar.gz: 11f6fa9898c906ed8a049f65cf5ad747f42dd45b5b7e231b15f2de801dc88bda
3
+ metadata.gz: fe06cb348414e96cabc7ad81a08d8c030d36d4f95cec538a2a1ca457123d6b58
4
+ data.tar.gz: 76e5664c2582c7ebac250e7ae2c0680864ea85f4896eaca76b1f5050f517c934
5
5
  SHA512:
6
- metadata.gz: a4d775dfe90ad4ec07e19cda9a12252a707720a2cca9b9b559e8ff4d5d0d8856e3170968634f9101be682477c3539c6a7e9798184f56c62deb8c40e20c5e0bbe
7
- data.tar.gz: 1fc315c946731ff47731eceff22cd0f1097d879fe04aa57cd93768613b044e54f10597799c7e5a465d83321f76fee7ab1678f45b7cacde21610a5e221f202fa7
6
+ metadata.gz: d5770a6b12241696f5930240913a15740a6950b94d8be0e0b64a83bc8f86da75c6c26d044e754590a1b8915e5f997c134d07653eaa64ee2177147edefa5f33ef
7
+ data.tar.gz: 34916a1a687ecf6fac55bf52a860529e29642043c5e8a35b44a9931ce37c6fc26edab43b6edc664eae5052649bbf133f92a24597f9b757a14feb81deb493c010
@@ -0,0 +1,6 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = tab
5
+ indent_size = 2
6
+
@@ -1,7 +1,8 @@
1
1
  language: ruby
2
- sudo: false
3
- dist: trusty
2
+ dist: xenial
3
+
4
4
  cache: bundler
5
+
5
6
  addons:
6
7
  apt:
7
8
  packages:
@@ -9,18 +10,18 @@ addons:
9
10
 
10
11
  before_script:
11
12
  - sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
12
- - gem update --system
13
- - gem install bundler
14
13
 
15
14
  matrix:
16
15
  include:
17
16
  - rvm: 2.3
18
17
  - rvm: 2.4
19
18
  - rvm: 2.5
20
- - rvm: ruby-head
19
+ - rvm: 2.6
20
+ - rvm: truffleruby
21
21
  - rvm: jruby-head
22
- env:
23
- - JRUBY_OPTS="--debug -X+O"
22
+ env: JRUBY_OPTS="--debug -X+O"
23
+ - rvm: ruby-head
24
24
  allow_failures:
25
25
  - rvm: ruby-head
26
+ - rvm: truffleruby
26
27
  - rvm: jruby-head
@@ -1,4 +1,4 @@
1
- # -*- encoding: utf-8 -*-
1
+
2
2
  require_relative 'lib/async/dns/version'
3
3
 
4
4
  Gem::Specification.new do |spec|
@@ -19,14 +19,13 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
  spec.require_paths = ["lib"]
22
- spec.has_rdoc = "yard"
23
22
 
24
- spec.add_dependency("async-io", "~> 1.3")
23
+ spec.add_dependency("async-io", "~> 1.15")
25
24
 
26
25
  spec.add_development_dependency "async-rspec", "~> 1.0"
27
26
  spec.add_development_dependency "process-daemon", "~> 1.0"
28
27
 
29
- spec.add_development_dependency "bundler", "~> 1.3"
28
+ spec.add_development_dependency "bundler"
30
29
  spec.add_development_dependency "rspec", "~> 3.6"
31
30
  spec.add_development_dependency "rake"
32
31
  end
@@ -10,8 +10,6 @@ require 'async/http/url_endpoint'
10
10
 
11
11
  require 'trenni/uri'
12
12
 
13
- # Async.logger.level = Logger::DEBUG
14
-
15
13
  endpoint = Async::HTTP::URLEndpoint.parse("https://cloudflare-dns.com/dns-query")
16
14
  client = Async::HTTP::Client.new(endpoint)
17
15
 
@@ -28,7 +28,6 @@ require_relative 'dns/message'
28
28
  require_relative 'dns/server'
29
29
  require_relative 'dns/resolver'
30
30
  require_relative 'dns/handler'
31
- require_relative 'dns/logger'
32
31
 
33
32
  module Async
34
33
  module DNS
@@ -85,7 +85,7 @@ module Async::DNS
85
85
  @logger.debug "<#{response.id}> Writing #{output_data.bytesize} bytes response to client via UDP..."
86
86
 
87
87
  if output_data.bytesize > UDP_TRUNCATION_SIZE
88
- @logger.warn "<#{response.id}>Response via UDP was larger than #{UDP_TRUNCATION_SIZE}!"
88
+ @logger.warn "<#{response.id}> Response via UDP was larger than #{UDP_TRUNCATION_SIZE}!"
89
89
 
90
90
  # Reencode data with truncation flag marked as true:
91
91
  truncation_error = Resolv::DNS::Message.new(response.id)
@@ -23,7 +23,6 @@ require 'resolv'
23
23
 
24
24
  require 'base64'
25
25
 
26
- require_relative 'logger'
27
26
  require_relative 'extensions/resolv'
28
27
 
29
28
  module Async::DNS
@@ -32,19 +31,6 @@ module Async::DNS
32
31
  # The DNS message container.
33
32
  Message = ::Resolv::DNS::Message
34
33
  DecodeError = ::Resolv::DNS::DecodeError
35
-
36
- @dump_bad_message = nil
37
-
38
- # Call this function with a path where bad messages will be saved. Any message that causes an exception to be thrown while decoding the binary will be saved in base64 for later inspection. The log file could grow quickly so be careful - not designed for long term use.
39
- def self.log_bad_messages!(log_path)
40
- bad_messages_log = Logger.new(log_path, 10, 1024*100)
41
- bad_messages_log.level = Logger::DEBUG
42
-
43
- @dump_bad_message = lambda do |error, data|
44
- bad_messages_log.debug("Bad message: #{Base64.encode64(data)}")
45
- Async::DNS.log_exception(bad_messages_log, error)
46
- end
47
- end
48
34
 
49
35
  # Decodes binary data into a {Message}.
50
36
  def self.decode_message(data)
@@ -63,13 +49,5 @@ module Async::DNS
63
49
 
64
50
  raise new_error
65
51
  end
66
-
67
- rescue => error
68
- # Log the bad messsage if required:
69
- if @dump_bad_message
70
- @dump_bad_message.call(error, data)
71
- end
72
-
73
- raise
74
52
  end
75
53
  end
@@ -142,7 +142,7 @@ module Async::DNS
142
142
  begin
143
143
  response = nil
144
144
 
145
- task.timeout(@timeout) do
145
+ task.with_timeout(@timeout) do
146
146
  @logger.debug "[#{message.id}] -> Try address #{endpoint}" if @logger
147
147
  response = try_server(request, endpoint)
148
148
  @logger.debug "[#{message.id}] <- Try address #{endpoint} = #{response}" if @logger
@@ -22,7 +22,6 @@ require 'async'
22
22
  require 'async/io'
23
23
 
24
24
  require_relative 'transaction'
25
- require_relative 'logger'
26
25
 
27
26
  module Async::DNS
28
27
  class Server
@@ -77,25 +76,24 @@ module Async::DNS
77
76
  begin
78
77
  question = question.without_origin(@origin)
79
78
 
80
- @logger.debug {"<#{query.id}> Processing question #{question} #{resource_class}..."}
79
+ @logger.debug(query) {"Processing question #{question} #{resource_class}..."}
81
80
 
82
81
  transaction = Transaction.new(self, query, question, resource_class, response, options)
83
82
 
84
83
  transaction.process
85
84
  rescue Resolv::DNS::OriginError
86
85
  # This is triggered if the question is not part of the specified @origin:
87
- @logger.debug {"<#{query.id}> Skipping question #{question} #{resource_class} because #{$!}"}
86
+ @logger.debug(query) {"Skipping question #{question} #{resource_class} because #{$!}"}
88
87
  end
89
88
  end
90
89
  rescue StandardError => error
91
- @logger.error "<#{query.id}> Exception thrown while processing #{transaction}!"
92
- Async::DNS.log_exception(@logger, error)
93
-
90
+ @logger.error(query) {error}
91
+
94
92
  response.rcode = Resolv::DNS::RCode::ServFail
95
93
  end
96
94
 
97
95
  end_time = Time.now
98
- @logger.debug {"<#{query.id}> Time to process request: #{end_time - start_time}s"}
96
+ @logger.debug(query) {"Time to process request: #{end_time - start_time}s"}
99
97
 
100
98
  return response
101
99
  end
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Async
22
22
  module DNS
23
- VERSION = '1.2.0'
23
+ VERSION = '1.2.1'
24
24
  end
25
25
  end
@@ -84,8 +84,6 @@ module Async::DNS::ResolverPerformanceSpec
84
84
  include_context Async::RSpec::Reactor
85
85
 
86
86
  it 'should be faster than native resolver' do
87
- # Async.logger.level = Logger::ERROR
88
-
89
87
  Benchmark.bm(30) do |x|
90
88
  a = x.report("Async::DNS::Resolver") do
91
89
  resolver = Async::DNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])
@@ -46,8 +46,6 @@ end
46
46
 
47
47
  StackProf.run(mode: :cpu, out: 'async/dns.stackprof') do
48
48
  Async::DNS::run_server(:listen => [[:udp, '0.0.0.0', 5300]]) do
49
- @logger.level = Logger::WARN
50
-
51
49
  match(//, IN::A) do |transaction|
52
50
  transaction.respond!(million[transaction.name])
53
51
  end
@@ -135,8 +135,6 @@ module Async::DNS::ServerPerformanceSpec
135
135
  end
136
136
 
137
137
  it 'takes time' do
138
- Async.logger.level = Logger::ERROR
139
-
140
138
  Benchmark.bm(30) do |x|
141
139
  @servers.each do |name, port|
142
140
  resolver = Async::DNS::Resolver.new([[:udp, '127.0.0.1', port]])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-dns
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-17 00:00:00.000000000 Z
11
+ date: 2019-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async-io
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '1.15'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '1.15'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: async-rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.3'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.3'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -102,6 +102,7 @@ executables: []
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
+ - ".editorconfig"
105
106
  - ".gitignore"
106
107
  - ".rspec"
107
108
  - ".travis.yml"
@@ -115,7 +116,6 @@ files:
115
116
  - lib/async/dns/extensions/resolv.rb
116
117
  - lib/async/dns/extensions/string.rb
117
118
  - lib/async/dns/handler.rb
118
- - lib/async/dns/logger.rb
119
119
  - lib/async/dns/message.rb
120
120
  - lib/async/dns/replace.rb
121
121
  - lib/async/dns/resolver.rb
@@ -164,8 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
164
  - !ruby/object:Gem::Version
165
165
  version: '0'
166
166
  requirements: []
167
- rubyforge_project:
168
- rubygems_version: 2.7.6
167
+ rubygems_version: 3.0.1
169
168
  signing_key:
170
169
  specification_version: 4
171
170
  summary: An easy to use DNS client resolver and server for Ruby.
@@ -1,31 +0,0 @@
1
- # Copyright, 2009, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy
4
- # of this software and associated documentation files (the "Software"), to deal
5
- # in the Software without restriction, including without limitation the rights
6
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- # copies of the Software, and to permit persons to whom the Software is
8
- # furnished to do so, subject to the following conditions:
9
- #
10
- # The above copyright notice and this permission notice shall be included in
11
- # all copies or substantial portions of the Software.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- # THE SOFTWARE.
20
-
21
- require 'logger'
22
-
23
- module Async::DNS
24
- # Logs an exception nicely to a standard `Logger`.
25
- def self.log_exception(logger, exception)
26
- logger.error "#{exception.class}: #{exception.message}"
27
- if exception.backtrace
28
- Array(exception.backtrace).each { |at| logger.error at }
29
- end
30
- end
31
- end