dnstraverse 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,6 +25,7 @@ module DNSTraverse
25
25
  class Referral
26
26
  include MessageUtility
27
27
 
28
+ attr_reader :status # :normal, :loop, :noglue
28
29
  attr_reader :server, :serverips, :qname, :qclass, :qtype, :nsatype
29
30
  attr_reader :refid, :refkey, :infocache, :parent, :bailiwick
30
31
  attr_reader :warnings, :children, :parent_ip
@@ -85,6 +86,7 @@ module DNSTraverse
85
86
  # of a resolution of a referral that didn't have glue records will have
86
87
  # this set to true so that you can distringuish this detail
87
88
  def initialize(args)
89
+ @status = args[:status] || :normal
88
90
  @resolver = args[:resolver] # Dnsruby::Resolver object
89
91
  @qname = args[:qname]
90
92
  @qclass = args[:qclass] || :IN
@@ -191,14 +193,16 @@ module DNSTraverse
191
193
  raise "This Referral object has already been resolved" if resolved?
192
194
  if noglue? then
193
195
  # foo.net IN NS ns.foo.net - no IP cached & no glue = failure
194
- Log.debug { "Attempt to resolve #{@server} with a bailiwick referral " +
196
+ Log.debug { "Resolve: #{@server} with a bailiwick referral " +
195
197
  " of #{bailiwick} - no glue record provided" }
196
- return Array.new
198
+ @status = :noglue
199
+ return EMPTY_ARRAY
197
200
  end
198
201
  if loop? then
199
202
  # b IN NS c.d, d IN NS a.b
200
- Log.debug { "Loop reached at server #{server}" }
201
- return Array.new
203
+ Log.debug { "Resolve: Loop reached at server #{server}" }
204
+ @status = :loop
205
+ return EMPTY_ARRAY
202
206
  end
203
207
  child_refid = 1
204
208
  starters, newbailiwick = @infocache.get_startservers(@server)
@@ -223,7 +227,8 @@ module DNSTraverse
223
227
  Log.debug { "Calculating resolution: #{self}" }
224
228
  # create stats_resolve containing all the statistics of the resolution
225
229
  @stats_resolve = Hash.new
226
- if noglue? then # in-bailiwick referral without glue
230
+ case @status
231
+ when :noglue # in-bailiwick referral without glue
227
232
  r = DNSTraverse::Response::NoGlue.new(:qname => @qname,
228
233
  :qclass => @qclass,
229
234
  :qtype => @qtype,
@@ -232,7 +237,7 @@ module DNSTraverse
232
237
  :bailiwick => @bailiwick)
233
238
  @stats_resolve[r.stats_key] = { :prob => 1.0, :response => r,
234
239
  :referral => self }
235
- elsif loop? then # endless loop, e.g. b. NS c.d, d NS a.b
240
+ when :loop # endless loop, e.g. b. NS c.d, d NS a.b
236
241
  r = DNSTraverse::Response::Loop.new(:qname => @qname,
237
242
  :qclass => @qclass,
238
243
  :qtype => @qtype,
@@ -347,7 +352,6 @@ module DNSTraverse
347
352
  def resolved?
348
353
  # root-root is always resolved, otherwise check we have IP addresses
349
354
  return true if is_rootroot?
350
- return true if @noglue
351
355
  return false if @serverips.nil?
352
356
  return true
353
357
  end
@@ -17,7 +17,7 @@ module DNSTraverse
17
17
 
18
18
  class Response::Loop < Response
19
19
 
20
- attr_reader :qname, :qclass, :qtype, :ip, :bailiwick, :server
20
+ attr_reader :qname, :qclass, :qtype, :ip, :bailiwick, :server, :status
21
21
 
22
22
  def initialize(args)
23
23
  # we queried @ip about @qname/@qclass/@qtype and received @server as a
@@ -28,10 +28,6 @@ module DNSTraverse
28
28
  @bailiwick = args[:bailiwick]
29
29
  @ip = args[:ip]
30
30
  @server = args[:server]
31
- @decoded_query = nil
32
- @infocache = nil
33
- @starters = nil
34
- @starters_bailiwick = nil
35
31
  @status = :loop
36
32
  update_stats_key
37
33
  return self
@@ -42,7 +38,7 @@ module DNSTraverse
42
38
  end
43
39
 
44
40
  def update_stats_key
45
- @stats_key = "key:#{@ip}:#{@status}:#{@qname}:#{@qclass}:#{@qtype}:#{@server}:#{@bailiwick}"
41
+ @stats_key = "key:#{@status}:#{@ip}:#{@qname}:#{@qclass}:#{@qtype}:#{@server}:#{@bailiwick}"
46
42
  end
47
43
 
48
44
  def to_s
@@ -17,7 +17,7 @@ module DNSTraverse
17
17
 
18
18
  class Response::NoGlue < Response
19
19
 
20
- attr_reader :qname, :qclass, :qtype, :ip, :bailiwick, :server
20
+ attr_reader :qname, :qclass, :qtype, :ip, :bailiwick, :server, :status
21
21
 
22
22
  def initialize(args)
23
23
  # we queried @ip about @qname/@qclass/@qtype and received @server as a
@@ -28,10 +28,6 @@ module DNSTraverse
28
28
  @bailiwick = args[:bailiwick]
29
29
  @ip = args[:ip]
30
30
  @server = args[:server]
31
- @decoded_query = nil
32
- @infocache = nil
33
- @starters = nil
34
- @starters_bailiwick = nil
35
31
  @status = :noglue
36
32
  update_stats_key
37
33
  return self
@@ -42,7 +38,7 @@ module DNSTraverse
42
38
  end
43
39
 
44
40
  def update_stats_key
45
- @stats_key = "key:#{@ip}:#{@status}:#{@qname}:#{@qclass}:#{@qtype}:#{@server}:#{@bailiwick}"
41
+ @stats_key = "key:#{@status}:#{@ip}:#{@qname}:#{@qclass}:#{@qtype}:#{@server}:#{@bailiwick}"
46
42
  end
47
43
 
48
44
  def to_s
@@ -51,4 +47,4 @@ module DNSTraverse
51
47
 
52
48
  end
53
49
 
54
- end
50
+ end
@@ -2,7 +2,7 @@ module DNSTraverse
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 8
5
+ PATCH = 9
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dnstraverse
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 8
10
- version: 0.1.8
9
+ - 9
10
+ version: 0.1.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - James Ponder
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-20 00:00:00 +01:00
18
+ date: 2011-08-21 00:00:00 +01:00
19
19
  default_executable: dnstraverse
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency