net-dns 0.7.1 → 0.8.0

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ODAwMGQ4ODMyYTIyZmNkN2NlNjIwMDk3Y2Y0ODNmYmZkODY0NmE4NQ==
5
+ data.tar.gz: !binary |-
6
+ NTAzODI5MjhmZWNmZDZmOWEyM2UyMDBkZDRmNmQxY2E4MDE0YjYxYw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YzMzY2RhYjJlNTcyNTllMzQ4ODdlYjkzNjViY2QyNDg4ZTQxNDJhNjA0MDM1
10
+ OThjMGZjY2EwMmY2ZTNjYTM0NGRmMDM2YzcwMDk0Yzg2MGVjYzNiODYzZDhj
11
+ M2JjNzExN2FkMTdlMzg5MGE1ZWIyMWJlOTQzMTBmMzYxOTAwYjk=
12
+ data.tar.gz: !binary |-
13
+ NDRiZjIyY2UxZTMxMjYxZDM3MjhlYjFiNDAxNDhmNWEwMDRmODNiYjg3MmY3
14
+ MzQxNWU4ZTlhMGE1ZDQ0MGYzNzBmMTU4YzVkYjc4ZjJlYmQ1NmY0OTE3ZDQ5
15
+ ZjkwYTNiZmM5ODBlMjM1MWU0Y2I5MmU4ZmI4NWJmNmEzMzRiNTQ=
@@ -1,14 +1,20 @@
1
1
  language: ruby
2
+
2
3
  rvm:
3
4
  - 1.8.7
4
5
  - 1.9.2
5
6
  - 1.9.3
7
+ - 2.0.0
6
8
  # - jruby-18mode
7
9
  # - jruby-19mode
8
10
  - rbx-18mode
9
11
  # - ruby-head
10
12
  # - jruby-head
11
- - ree
13
+
12
14
  notifications:
13
15
  recipients:
14
- - weppos@weppos.net
16
+ - weppos@weppos.net
17
+
18
+ matrix:
19
+ allow_failures:
20
+ - rvm: 2.0.0
@@ -1,84 +1,97 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## master
5
+
6
+ - FIXED: undefined local variable or method `source_address_inet6' (GH-40). [Thanks @simsicon]
7
+
8
+ - FIXED: Fixed bug on parsing multiple nameservers on different lines (GH-45). [Thanks @nicholasren]
9
+
10
+ - CHANGED: Dropped duplicate query ID filter. Query ID is now randomically generated but it's not guaranteed to be unique (GH-39). [Thanks @ebroder]
11
+
12
+ - CHANGED: require 'net/dns' is now the preferred way to load the library (GH-37). [Thanks @johnroa]
13
+
14
+ - CHANGED: Removed setup.rb installation script.
15
+
16
+
4
17
  ## Release 0.7.1
5
18
 
6
- * FIXED: Invalid file permissions on several files (GH-35) [Thanks @jamespharaoh]
19
+ - FIXED: Invalid file permissions on several files (GH-35) [Thanks @jamespharaoh]
7
20
 
8
21
 
9
22
  ## Release 0.7.0
10
23
 
11
- * ADDED: Added (experimental) Support for HINFO record.
24
+ - ADDED: Added (experimental) Support for HINFO record.
12
25
 
13
- * FIXED: Use Net::DNS::Resolver::Error class (not ResolverError, which does not exist).
26
+ - FIXED: Use Net::DNS::Resolver::Error class (not ResolverError, which does not exist).
14
27
 
15
- * FIXED: Cleaned up require dependency and recursive require statements.
28
+ - FIXED: Cleaned up require dependency and recursive require statements.
16
29
 
17
- * FIXED: Use RbConfig instead of obsolete and deprecated Config (GH-28, GH-33) [Thanks @shadowbq, @eik3]
30
+ - FIXED: Use RbConfig instead of obsolete and deprecated Config (GH-28, GH-33) [Thanks @shadowbq, @eik3]
18
31
 
19
- * FIXED: SRV record not required by Net::DNS::RR (GH-27) [Thanks @sebastian]
32
+ - FIXED: SRV record not required by Net::DNS::RR (GH-27) [Thanks @sebastian]
20
33
 
21
- * FIXED: Resolver now supports IPv6 (GH-32) [Thanks @jamesotron]
34
+ - FIXED: Resolver now supports IPv6 (GH-32) [Thanks @jamesotron]
22
35
 
23
- * FIXED: Net::DNS::RR::PTR references an invalid parameter (GH-19) [Thanks @dd23]
36
+ - FIXED: Net::DNS::RR::PTR references an invalid parameter (GH-19) [Thanks @dd23]
24
37
 
25
- * FIXED: Net::DNS::Question changes input arguments (GH-7) [Thanks @gfarfl]
38
+ - FIXED: Net::DNS::Question changes input arguments (GH-7) [Thanks @gfarfl]
26
39
 
27
- * CHANGED: Refactoring unit test to follow most used Ruby conventions.
40
+ - CHANGED: Refactoring unit test to follow most used Ruby conventions.
28
41
 
29
- * CHANGED: Rewritten and simplified Net::DNS::Classes. Improved test harness.
42
+ - CHANGED: Rewritten and simplified Net::DNS::Classes. Improved test harness.
30
43
 
31
- * CHANGED: Removed Jeweler development dependency.
44
+ - CHANGED: Removed Jeweler development dependency.
32
45
 
33
- * CHANGED: The library is now compatible with Bundler.
46
+ - CHANGED: The library is now compatible with Bundler.
34
47
 
35
- * CHANGED: Minimum supported Ruby version changed to Ruby 1.8.7.
48
+ - CHANGED: Minimum supported Ruby version changed to Ruby 1.8.7.
36
49
 
37
- * CHANGED: Rescue NameError so unsupported record types only result in a warning.
50
+ - CHANGED: Rescue NameError so unsupported record types only result in a warning.
38
51
 
39
- * CHANGED: Renamed Net::DNS::Resolver#send to Net::DNS::Resolver#query to avoid overriding default meaning of send method.
52
+ - CHANGED: Renamed Net::DNS::Resolver#send to Net::DNS::Resolver#query to avoid overriding default meaning of send method.
40
53
 
41
54
 
42
55
  ## Release 0.6.1
43
56
 
44
- * ADDED: Net::DNS::Packet#to_s method (alias of #inspect)
57
+ - ADDED: Net::DNS::Packet#to_s method (alias of #inspect)
45
58
 
46
- * FIXED: typo in lib/net/dns/rr/ptr.rb [Thanks Chris Lundquist]
59
+ - FIXED: typo in lib/net/dns/rr/ptr.rb [Thanks Chris Lundquist]
47
60
 
48
- * FIXED: warning: method redefined; discarding old inspect (GH-3) [Thanks Kevin Baker]
61
+ - FIXED: warning: method redefined; discarding old inspect (GH-3) [Thanks Kevin Baker]
49
62
 
50
- * FIXED: issue with rescue ArgumentError (GH-5) and with IPAddr handling (GH-6)
63
+ - FIXED: issue with rescue ArgumentError (GH-5) and with IPAddr handling (GH-6)
51
64
 
52
65
 
53
66
  ## Release 0.6.0
54
67
 
55
- *WARNING:* If you are upgrading from a previous minor release, check out the Compatibility issue list below.
68
+ *WARNING:- If you are upgrading from a previous minor release, check out the Compatibility issue list below.
56
69
 
57
- * FIXED: Added missing #to_s method to Net::DNS::Question.
70
+ - FIXED: Added missing #to_s method to Net::DNS::Question.
58
71
 
59
- * FIXED: Compatibility with Ruby 1.9
72
+ - FIXED: Compatibility with Ruby 1.9
60
73
 
61
- * FIXED: Types regexp order issue
74
+ - FIXED: Types regexp order issue
62
75
 
63
- * CHANGED: Refactoring unit test to follow most used Ruby conventions
76
+ - CHANGED: Refactoring unit test to follow most used Ruby conventions
64
77
 
65
- * CHANGED: default timeout is now 5 seconds for both UDP and TCP
78
+ - CHANGED: default timeout is now 5 seconds for both UDP and TCP
66
79
 
67
- * CHANGED: Moved main dns.rb file to lib/net folder as default for GEMs. In this way it can be autoloaded when the gem is required.
80
+ - CHANGED: Moved main dns.rb file to lib/net folder as default for GEMs. In this way it can be autoloaded when the gem is required.
68
81
 
69
82
  ### Compatibility issues
70
83
 
71
- * CHANGED: RR#set_stype scope is now private to prevent invalid usage.
84
+ - CHANGED: RR#set_stype scope is now private to prevent invalid usage.
72
85
 
73
- * CHANGED: DnsTimeout#timeout now raises LocalJumpError instead of DnsTimeoutArgumentError when block is missing.
86
+ - CHANGED: DnsTimeout#timeout now raises LocalJumpError instead of DnsTimeoutArgumentError when block is missing.
74
87
 
75
- * CHANGED: Renamed Net::DNS::RR::Types::Types to Net::DNS::RR::Types::TYPES to follow Ruby coding standards.
88
+ - CHANGED: Renamed Net::DNS::RR::Types::Types to Net::DNS::RR::Types::TYPES to follow Ruby coding standards.
76
89
 
77
90
 
78
91
  ## Release 0.4
79
92
 
80
- * many bug fixes (thanks guys!)
81
- * a whole new class Net::DNS::Header::RCode
82
- * new methods in Net::DNS::Resolver class to do AXFR queries
83
- * a new SRV resource record written by Dan Janowski
84
- * more documentation written and corrected
93
+ - many bug fixes (thanks guys!)
94
+ - a whole new class Net::DNS::Header::RCode
95
+ - new methods in Net::DNS::Resolver class to do AXFR queries
96
+ - a new SRV resource record written by Dan Janowski
97
+ - more documentation written and corrected
@@ -1,48 +1,40 @@
1
- = Net::DNS
1
+ # Net::DNS
2
2
 
3
3
  Net::DNS is a DNS library written in pure Ruby. It started as a port of Perl Net::DNS module, but it evolved in time into a full Ruby library.
4
4
 
5
5
 
6
- == Features
6
+ ## Features
7
7
 
8
- * Complete OO interface
9
- * Clean and intuitive API
10
- * Modular and flexible
8
+ - Complete OO interface
9
+ - Clean and intuitive API
10
+ - Modular and flexible
11
11
 
12
12
 
13
- == Requirements
13
+ ## Requirements
14
14
 
15
- * Ruby >= 1.8.6 (not tested with previous versions)
15
+ * Ruby >= 1.8.7
16
16
 
17
- As of release TODO, Net::DNS is compatible with Ruby 1.9.1.
18
17
 
18
+ ## Installation
19
19
 
20
- == Install
20
+ The best way to install this library is via [RubyGems](https://rubygems.org/).
21
21
 
22
- Just use RubyGems:
23
-
24
- $ gem install net-dns
22
+ $ gem install net-dns
25
23
 
26
- If you want to install from source, you can use Rake:
24
+ You might need administrator privileges on your system to install the gem.
27
25
 
28
- $ rake install
29
26
 
30
- Or directly from setup.rb
27
+ ## API Documentation
31
28
 
32
- $ ruby setup.rb
29
+ Visit the page http://rdoc.info/gems/net-dns
33
30
 
34
31
 
35
- == API Documentation
36
-
37
- Visit the page http://marcoceresa.com/net-dns
38
-
39
-
40
- == Trivial resolver
32
+ ## Trivial resolver
41
33
 
42
34
  The simplest way to use the library is to invoke the Resolver() method:
43
35
 
44
36
  require 'rubygems'
45
- require 'net/dns/resolver'
37
+ require 'net/dns'
46
38
  p Resolver("www.google.com")
47
39
 
48
40
  The output is compatible with BIND zone files and it's the same you would get with the dig utility.
@@ -75,39 +67,39 @@ The output is compatible with BIND zone files and it's the same you would get wi
75
67
  ns3.google.com. 170275 IN A 216.239.36.10
76
68
  ns4.google.com. 170275 IN A 216.239.38.10
77
69
 
78
-
79
70
  An optional block can be passed yielding the Net::DNS::Packet object
80
71
 
81
- Resolver("www.google.com") {|packet| puts packet.size + " bytes"}
82
- #=> 484 bytes
72
+ Resolver("www.google.com") { |packet| puts packet.size + " bytes" }
73
+ # => 484 bytes
83
74
 
84
75
  Same for Net::DNS::Resolver.start():
85
76
 
86
77
  Net::DNS::Resolver.start("google.com").answer.size
87
- #=> 5
78
+ # => 5
88
79
 
89
80
  As optional parameters, +TYPE+ and +CLASS+ can be specified.
90
81
 
91
- p Net::DNS::Resolver.start("google.com", Net::DNS::MX)
92
-
93
- ;; Answer received from localhost:53 (316 bytes)
94
- ;;
95
- ;; HEADER SECTION
96
- ;; id = 59980
97
- ;; qr = 1 opCode: QUERY aa = 0 tc = 0 rd = 1
98
- ;; ra = 1 ad = 0 cd = 0 rcode = NoError
99
- ;; qdCount = 1 anCount = 4 nsCount = 4 arCount = 8
100
-
101
- ;; QUESTION SECTION (1 record):
102
- ;; google.com. IN MX
103
-
104
- ;; ANSWER SECTION (4 records):
105
- google.com. 10800 IN MX 10 smtp2.google.com.
106
- google.com. 10800 IN MX 10 smtp3.google.com.
107
- google.com. 10800 IN MX 10 smtp4.google.com.
108
- google.com. 10800 IN MX 10 smtp1.google.com.
109
-
110
- == Handling the response packet
82
+ p Net::DNS::Resolver.start("google.com", Net::DNS::MX)
83
+
84
+ ;; Answer received from localhost:53 (316 bytes)
85
+ ;;
86
+ ;; HEADER SECTION
87
+ ;; id = 59980
88
+ ;; qr = 1 opCode: QUERY aa = 0 tc = 0 rd = 1
89
+ ;; ra = 1 ad = 0 cd = 0 rcode = NoError
90
+ ;; qdCount = 1 anCount = 4 nsCount = 4 arCount = 8
91
+
92
+ ;; QUESTION SECTION (1 record):
93
+ ;; google.com. IN MX
94
+
95
+ ;; ANSWER SECTION (4 records):
96
+ google.com. 10800 IN MX 10 smtp2.google.com.
97
+ google.com. 10800 IN MX 10 smtp3.google.com.
98
+ google.com. 10800 IN MX 10 smtp4.google.com.
99
+ google.com. 10800 IN MX 10 smtp1.google.com.
100
+
101
+
102
+ ## Handling the response packet
111
103
 
112
104
  The method Net::DNS::Resolver.start is a wrapper around Resolver.new. It returns a new Net::DNS::Packet object.
113
105
 
@@ -150,13 +142,14 @@ Gives:
150
142
  74.125.45.100 is alive
151
143
  74.125.67.100 is alive
152
144
  209.85.171.100 is alive
153
-
154
145
 
155
- == Licence
146
+
147
+ ## License
156
148
 
157
149
  Net::DNS is distributed under the same license Ruby is.
158
150
 
159
151
 
160
- == Author
152
+ ## Authors
161
153
 
162
- (c) Marco Ceresa 2006-2009
154
+ - Marco Ceresa (@bluemonk)
155
+ - Simone Carletti (@weppos)
data/Rakefile CHANGED
@@ -27,7 +27,7 @@ spec = Gem::Specification.new do |s|
27
27
  s.homepage = "http://github.com/bluemonk/net-dns"
28
28
  s.rubyforge_project = "net-dns"
29
29
 
30
- s.add_development_dependency "rake", "~> 0.9"
30
+ s.add_development_dependency "rake", "~> 10.0"
31
31
  s.add_development_dependency "yard"
32
32
 
33
33
  s.files = `git ls-files`.split("\n")
@@ -0,0 +1,4 @@
1
+ search corporate.thoughtworks.com
2
+ nameserver 192.168.1.1
3
+ nameserver 192.168.1.2
4
+ nameserver 192.168.1.3 192.168.1.4
@@ -1,41 +1,32 @@
1
1
  module Net
2
2
  module DNS
3
3
 
4
- #
5
- # =Name
6
- #
7
- # Net::DNS::Header - DNS packet header class
8
- #
9
- # =Synopsis
10
- #
11
- # require 'net/dns/header'
12
- #
13
- # =Description
4
+ # DNS packet header class
14
5
  #
15
6
  # The Net::DNS::Header class represents the header portion of a
16
7
  # DNS packet. An Header object is created whenever a new packet
17
8
  # is parsed or as user request.
18
9
  #
19
10
  # header = Net::DNS::Header.new
20
- # # ;; id = 18123
21
- # # ;; qr = 0 opCode: 0 aa = 0 tc = 0 rd = 1
22
- # # ;; ra = 0 ad = 0 cd = 0 rcode = 0
23
- # # ;; qdCount = 1 anCount = 0 nsCount = 0 arCount = 0
11
+ # # ;; id = 18123
12
+ # # ;; qr = 0 opCode: 0 aa = 0 tc = 0 rd = 1
13
+ # # ;; ra = 0 ad = 0 cd = 0 rcode = 0
14
+ # # ;; qdCount = 1 anCount = 0 nsCount = 0 arCount = 0
24
15
  #
25
16
  # header.format
26
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
27
- # # | 18123 |
28
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
29
- # # |0| 0 |0|0|1|0|0| 0 | 0 |
30
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
31
- # # | 1 |
32
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
33
- # # | 0 |
34
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
35
- # # | 0 |
36
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
37
- # # | 0 |
38
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
17
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
18
+ # # | 18123 |
19
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20
+ # # |0| 0 |0|0|1|0|0| 0 | 0 |
21
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
22
+ # # | 1 |
23
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24
+ # # | 0 |
25
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
26
+ # # | 0 |
27
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28
+ # # | 0 |
29
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
39
30
  #
40
31
  # # packet is an instance of Net::DNS::Packet
41
32
  # header = packet.header
@@ -63,17 +54,8 @@ module Net
63
54
  class Error < StandardError
64
55
  end
65
56
 
66
- # The requested ID is already in use.
67
- class DuplicateIDError < Error
68
- end
69
-
70
57
 
71
- #
72
- # = Name
73
- #
74
- # Net::DNS::Header::RCode - DNS Header RCode handling class
75
- #
76
- # =Synopsis
58
+ # DNS Header RCode handling class
77
59
  #
78
60
  # It should be used internally by Net::DNS::Header class. However, it's still
79
61
  # possible to instantiate it directly.
@@ -81,8 +63,6 @@ module Net
81
63
  # require 'net/dns/header'
82
64
  # rcode = Net::DNS::Header::RCode.new 0
83
65
  #
84
- # =Description
85
- #
86
66
  # The RCode class represents the RCode field in the Header portion of a
87
67
  # DNS packet. This field (called Response Code) is used to get informations
88
68
  # about the status of a DNS operation, such as a query or an update. These
@@ -171,6 +151,7 @@ module Net
171
151
  end
172
152
  end
173
153
 
154
+
174
155
  # Constant for +opCode+ query
175
156
  QUERY = 0
176
157
  # Constant for +opCode+ iquery
@@ -180,8 +161,6 @@ module Net
180
161
  # Array with given strings
181
162
  OPARR = %w[QUERY IQUERY STATUS]
182
163
 
183
- @@id_arr = []
184
-
185
164
  # Reader for +id+ attribute
186
165
  attr_reader :id
187
166
  # Reader for the operational code
@@ -265,10 +244,10 @@ module Net
265
244
  # Inspect method, prints out all the options and relative values.
266
245
  #
267
246
  # p Net::DNS::Header.new
268
- # # ;; id = 18123
269
- # # ;; qr = 0 opCode: 0 aa = 0 tc = 0 rd = 1
270
- # # ;; ra = 0 ad = 0 cd = 0 rcode = 0
271
- # # ;; qdCount = 1 anCount = 0 nsCount = 0 arCount = 0
247
+ # # ;; id = 18123
248
+ # # ;; qr = 0 opCode: 0 aa = 0 tc = 0 rd = 1
249
+ # # ;; ra = 0 ad = 0 cd = 0 rcode = 0
250
+ # # ;; qdCount = 1 anCount = 0 nsCount = 0 arCount = 0
272
251
  #
273
252
  # This method will maybe be changed in the future to a more pretty
274
253
  # way of display output.
@@ -299,19 +278,19 @@ module Net
299
278
  # similar to those often found on RFCs.
300
279
  #
301
280
  # p Net::DNS::Header.new.format
302
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
303
- # # | 18123 |
304
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
305
- # # |0| 0 |0|0|1|0|0| 0 | 0 |
306
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
307
- # # | 1 |
308
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
309
- # # | 0 |
310
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
311
- # # | 0 |
312
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
313
- # # | 0 |
314
- # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
281
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
282
+ # # | 18123 |
283
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
284
+ # # |0| 0 |0|0|1|0|0| 0 | 0 |
285
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
286
+ # # | 1 |
287
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
288
+ # # | 0 |
289
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
290
+ # # | 0 |
291
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
292
+ # # | 0 |
293
+ # # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
315
294
  #
316
295
  # This can be very usefull for didactical purpouses :)
317
296
  #
@@ -357,12 +336,8 @@ module Net
357
336
  # performing security tests.
358
337
  #
359
338
  def id=(val)
360
- if @@id_arr.include? val
361
- raise DuplicateIDError, "ID `#{val}' already used"
362
- end
363
- if (1..65535).include? val
339
+ if (0..65535).include? val
364
340
  @id = val
365
- @@id_arr.push val
366
341
  else
367
342
  raise ArgumentError, "ID `#{val}' out of range"
368
343
  end
@@ -403,7 +378,7 @@ module Net
403
378
  # Returns a string representation of the +opCode+
404
379
  #
405
380
  # puts "Packet is a #{header.opCode_str}"
406
- # #=> Packet is a QUERY
381
+ # #=> Packet is a QUERY
407
382
  #
408
383
  def opCode_str
409
384
  OPARR[@opCode]
@@ -689,7 +664,7 @@ module Net
689
664
  end
690
665
  end
691
666
 
692
- private
667
+ private
693
668
 
694
669
  def new_from_scratch
695
670
  @id = genID # generate ad unique id
@@ -729,10 +704,7 @@ module Net
729
704
  end
730
705
 
731
706
  def genID
732
- while (@@id_arr.include?(q = rand(65535)))
733
- end
734
- @@id_arr.push(q)
735
- q
707
+ rand(65535)
736
708
  end
737
709
 
738
710
  end