rubydns 0.6.5 → 0.6.6
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.
- checksums.yaml +4 -4
- data/lib/rubydns/handler.rb +5 -3
- data/lib/rubydns/resolver.rb +16 -6
- data/lib/rubydns/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4fda39223a95e55c2076290f606afad961a2329
|
4
|
+
data.tar.gz: 68c313608b3dfff428024fded19fc4ca09031417
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 446b2658fd2a6438881ca805f0a202ca34f3d3e7b56480751ee230d5dfa3ac93757dac0f51f69edbad6fbc9afc925b8fd11efd774696b63439b1d8b6bfa5c044
|
7
|
+
data.tar.gz: 40fa8b55fc9351c2c7afba9791ea58632290f3c21871005729498e1058b01219cc45c3d638076599a203c453ffd2190a4facaeff7d495afbbea397964fd9603b
|
data/lib/rubydns/handler.rb
CHANGED
@@ -23,7 +23,7 @@ require 'rubydns/message'
|
|
23
23
|
module RubyDNS
|
24
24
|
|
25
25
|
def self.get_peer_details(connection)
|
26
|
-
Socket.unpack_sockaddr_in(connection.get_peername)
|
26
|
+
Socket.unpack_sockaddr_in(connection.get_peername)
|
27
27
|
end
|
28
28
|
|
29
29
|
module UDPHandler
|
@@ -61,7 +61,8 @@ module RubyDNS
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def receive_data(data)
|
64
|
-
|
64
|
+
peer_port, peer_ip = RubyDNS::get_peer_details(self)
|
65
|
+
options = {:peer => peer_ip}
|
65
66
|
|
66
67
|
UDPHandler.process(@server, data, options) do |answer|
|
67
68
|
data = answer.encode
|
@@ -78,7 +79,8 @@ module RubyDNS
|
|
78
79
|
data = truncation_error.encode
|
79
80
|
end
|
80
81
|
|
81
|
-
|
82
|
+
# We explicitly use the ip and port given, because we found that send_data was unreliable in a callback.
|
83
|
+
self.send_datagram(data, peer_ip, peer_port)
|
82
84
|
end
|
83
85
|
end
|
84
86
|
end
|
data/lib/rubydns/resolver.rb
CHANGED
@@ -40,7 +40,8 @@ module RubyDNS
|
|
40
40
|
|
41
41
|
# Provides the next sequence identification number which is used to keep track of DNS messages.
|
42
42
|
def next_id!
|
43
|
-
|
43
|
+
# Sequence IDs are 16-bit integers.
|
44
|
+
return (@sequence += 1) % (2**16)
|
44
45
|
end
|
45
46
|
|
46
47
|
# Look up a named resource of the given resource_class.
|
@@ -115,6 +116,8 @@ module RubyDNS
|
|
115
116
|
end
|
116
117
|
|
117
118
|
def process_response!(response)
|
119
|
+
finish_request!
|
120
|
+
|
118
121
|
if Exception === response
|
119
122
|
@logger.warn "[#{@message.id}] Failure while processing response #{exception}!" if @logger
|
120
123
|
RubyDNS.log_exception(@logger, response) if @logger
|
@@ -129,7 +132,7 @@ module RubyDNS
|
|
129
132
|
|
130
133
|
try_next_server!
|
131
134
|
else
|
132
|
-
@logger.
|
135
|
+
@logger.debug "[#{@message.id}] Received valid response #{response.inspect}" if @logger
|
133
136
|
|
134
137
|
succeed response
|
135
138
|
end
|
@@ -137,12 +140,17 @@ module RubyDNS
|
|
137
140
|
|
138
141
|
private
|
139
142
|
|
140
|
-
def
|
143
|
+
def finish_request!
|
144
|
+
cancel_timeout
|
145
|
+
|
146
|
+
# Cancel an existing request if it is in flight:
|
141
147
|
if @request
|
142
148
|
@request.close_connection
|
143
149
|
@request = nil
|
144
150
|
end
|
145
|
-
|
151
|
+
end
|
152
|
+
|
153
|
+
def try_next_server!
|
146
154
|
if @servers.size > 0
|
147
155
|
@server = @servers.shift
|
148
156
|
|
@@ -159,9 +167,11 @@ module RubyDNS
|
|
159
167
|
end
|
160
168
|
|
161
169
|
# Setting up the timeout...
|
162
|
-
|
170
|
+
timeout(@timeout) do
|
163
171
|
@logger.debug "[#{@message.id}] Request timed out!" if @logger
|
164
172
|
|
173
|
+
finish_request!
|
174
|
+
|
165
175
|
try_next_server!
|
166
176
|
end
|
167
177
|
else
|
@@ -189,7 +199,7 @@ module RubyDNS
|
|
189
199
|
def receive_data(data)
|
190
200
|
# Receiving response from remote DNS server...
|
191
201
|
message = RubyDNS::decode_message(data)
|
192
|
-
|
202
|
+
|
193
203
|
# The message id must match, and it can't be truncated:
|
194
204
|
@request.process_response!(message)
|
195
205
|
rescue Resolv::DNS::DecodeError => error
|
data/lib/rubydns/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubydns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08
|
11
|
+
date: 2013-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rexec
|