improve LLSDHelpers DeserialiseOSDMap
parent
e32efe5d22
commit
ccd47d0cf1
|
@ -65,21 +65,6 @@ namespace OpenSim.Capabilities.Handlers
|
||||||
{
|
{
|
||||||
//m_log.DebugFormat("[XXX]: FetchInventoryDescendentsRequest in {0}, {1}", (m_Scene == null) ? "none" : m_Scene.Name, request);
|
//m_log.DebugFormat("[XXX]: FetchInventoryDescendentsRequest in {0}, {1}", (m_Scene == null) ? "none" : m_Scene.Name, request);
|
||||||
|
|
||||||
// nasty temporary hack here, the linden client falsely
|
|
||||||
// identifies the uuid 00000000-0000-0000-0000-000000000000
|
|
||||||
// as a string which breaks us
|
|
||||||
//
|
|
||||||
// correctly mark it as a uuid
|
|
||||||
//
|
|
||||||
request = request.Replace("<string>00000000-0000-0000-0000-000000000000</string>", "<uuid>00000000-0000-0000-0000-000000000000</uuid>");
|
|
||||||
|
|
||||||
// another hack <integer>1</integer> results in a
|
|
||||||
// System.ArgumentException: Object type System.Int32 cannot
|
|
||||||
// be converted to target type: System.Boolean
|
|
||||||
//
|
|
||||||
request = request.Replace("<key>fetch_folders</key><integer>0</integer>", "<key>fetch_folders</key><boolean>0</boolean>");
|
|
||||||
request = request.Replace("<key>fetch_folders</key><integer>1</integer>", "<key>fetch_folders</key><boolean>1</boolean>");
|
|
||||||
|
|
||||||
Hashtable hash = new Hashtable();
|
Hashtable hash = new Hashtable();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,6 +30,7 @@ using System.Collections;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Capabilities
|
namespace OpenSim.Framework.Capabilities
|
||||||
{
|
{
|
||||||
|
@ -160,7 +161,18 @@ namespace OpenSim.Framework.Capabilities
|
||||||
else if(enumerator.Value is Boolean && field.FieldType == typeof(int) )
|
else if(enumerator.Value is Boolean && field.FieldType == typeof(int) )
|
||||||
{
|
{
|
||||||
int i = (bool)enumerator.Value ? 1 : 0;
|
int i = (bool)enumerator.Value ? 1 : 0;
|
||||||
field.SetValue(obj, (object)i);
|
field.SetValue(obj, i);
|
||||||
|
}
|
||||||
|
else if(field.FieldType == typeof(bool) && enumerator.Value is int)
|
||||||
|
{
|
||||||
|
bool b = (int)enumerator.Value != 0;
|
||||||
|
field.SetValue(obj, b);
|
||||||
|
}
|
||||||
|
else if(field.FieldType == typeof(UUID) && enumerator.Value is string)
|
||||||
|
{
|
||||||
|
UUID u;
|
||||||
|
UUID.TryParse((string)enumerator.Value, out u);
|
||||||
|
field.SetValue(obj, u);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue