summaryrefslogtreecommitdiff
path: root/lib/resolv.rb
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-02-05 18:31:20 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-02-05 18:31:20 +0000
commitc6c24fa3926ee007611e60e65f54ef430563f480 (patch)
treef7e1ef47564f44f4fefb1e0feb145bfca6def209 /lib/resolv.rb
parentbdf4041cbfa9220230aef617b3f79983681084c3 (diff)
* lib/resolv.rb (Resolv::DNS::Resource::TXT): multiple strings was not
handled. (Resolv::DNS::Resource::TXT#strings): new method to return all strings. (Resolv::DNS::Message::MessageEncoder#put_string_list): new method. (Resolv::DNS::Message::MessageDecoder#get_string_list): ditto. based on [ruby-talk:129732] by Sam Roberts. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
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