Dont fallback to yaml for service.info, its either base64 or a string

git-svn-id: file:///home/svn/framework3/trunk@9686 4d416f70-5f16-0410-b530-b9f4589650da
unstable
HD Moore 2010-07-06 18:17:14 +00:00
parent 7c9e39ab1d
commit 8f967af2f3
1 changed files with 7 additions and 3 deletions

View File

@ -1687,7 +1687,7 @@ class DBManager
%w{created-at updated-at name state info}.each { |datum|
if service.elements[datum].text
if datum == "info"
service_data["info"] = unserialize_object(service.elements[datum].text.to_s.strip)
service_data["info"] = unserialize_object(service.elements[datum].text.to_s.strip, false)
else
service_data[datum.gsub("-","_")] = service.elements[datum].text.to_s.strip
end
@ -2589,14 +2589,18 @@ class DBManager
end
end
def unserialize_object(string)
def unserialize_object(string, allow_yaml = true)
return string unless string.is_a?(String)
return nil if not string
return nil if string.empty?
begin
Marshal.load(string.unpack("m")[0])
rescue ::Exception => e
YAML.load(string) rescue string
if allow_yaml
YAML.load(string) rescue string
else
string
end
end
end