summaryrefslogtreecommitdiff
path: root/lib/resolv.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/resolv.rb')
-rw-r--r--lib/resolv.rb30
1 files changed, 24 insertions, 6 deletions
diff --git a/lib/resolv.rb b/lib/resolv.rb
index 28847f4bb2..3861d9190d 100644
--- a/lib/resolv.rb
+++ b/lib/resolv.rb
@@ -1154,6 +1154,12 @@ class Resolv
@data << d
end
+ def put_string_list(ds)
+ ds.each {|d|
+ self.put_string(d)
+ }
+ end
+
def put_name(d)
put_labels(d.to_a)
end
@@ -1266,6 +1272,14 @@ class Resolv
return d
end
+ def get_string_list
+ strings = []
+ while @index < @limit
+ strings << self.get_string
+ end
+ strings
+ end
+
def get_name
return Name.new(self.get_labels)
end
@@ -1508,18 +1522,22 @@ class Resolv
class TXT < Resource
TypeValue = 16
- def initialize(data)
- @data = data
+ def initialize(first_string, *rest_strings)
+ @strings = [first_string, *rest_strings]
+ end
+ attr_reader :strings
+
+ def data
+ @strings[0]
end
- attr_reader :data
def encode_rdata(msg)
- msg.put_string(@data)
+ msg.put_string_list(@strings)
end
def self.decode_rdata(msg)
- data = msg.get_string
- return self.new(data)
+ strings = msg.get_string_list
+ return self.new(*strings)
end
end