* re-enabled AssetNotFound code
* turned script asset fetching asynchronousThreadPoolClientBranch
parent
4c2e304ce6
commit
4c6e5a5090
|
@ -457,21 +457,22 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
|
|
||||||
public void AssetNotFound(LLUUID assetID)
|
public void AssetNotFound(LLUUID assetID)
|
||||||
{
|
{
|
||||||
m_log.ErrorFormat("[ASSET CACHE]: Unhandled AssetNotFound for {0}", assetID);
|
//m_log.ErrorFormat("[ASSET CACHE]: Unhandled AssetNotFound for {0}", assetID);
|
||||||
|
|
||||||
//if (this.RequestedTextures.ContainsKey(assetID))
|
AssetRequest req;
|
||||||
//{
|
|
||||||
// m_log.WarnFormat("[ASSET CACHE]: sending image not found for {0}", assetID);
|
if (RequestedTextures.TryGetValue(assetID, out req))
|
||||||
// AssetRequest req = this.RequestedTextures[assetID];
|
{
|
||||||
// ImageNotInDatabasePacket notFound = new ImageNotInDatabasePacket();
|
m_log.WarnFormat("[ASSET CACHE]: sending image not found for {0}", assetID);
|
||||||
// notFound.ImageID.ID = assetID;
|
ImageNotInDatabasePacket notFound = new ImageNotInDatabasePacket();
|
||||||
// req.RequestUser.OutPacket(notFound);
|
notFound.ImageID.ID = assetID;
|
||||||
// this.RequestedTextures.Remove(assetID);
|
req.RequestUser.OutPacket(notFound, ThrottleOutPacketType.Unknown);
|
||||||
//}
|
RequestedTextures.Remove(assetID);
|
||||||
//else
|
}
|
||||||
//{
|
else
|
||||||
// m_log.ErrorFormat("[ASSET CACHE]: Cound not send image not found for {0}", assetID);
|
{
|
||||||
//}
|
m_log.ErrorFormat("[ASSET CACHE]: Asset [{0}] not found, but couldn't find any users to send to ", assetID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int CalculateNumPackets(byte[] data)
|
private int CalculateNumPackets(byte[] data)
|
||||||
|
|
|
@ -33,6 +33,7 @@ using System.Xml.Serialization;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
|
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Framework.Communications.Cache;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
using OpenSim.Region.Environment.Interfaces;
|
using OpenSim.Region.Environment.Interfaces;
|
||||||
using OpenSim.Region.Environment.Scenes.Scripting;
|
using OpenSim.Region.Environment.Scenes.Scripting;
|
||||||
|
@ -44,12 +45,12 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
private string m_inventoryFileName = String.Empty;
|
private string m_inventoryFileName = String.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The inventory folder for this prim
|
/// The inventory folder for this prim
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private LLUUID m_folderID = LLUUID.Zero;
|
private LLUUID m_folderID = LLUUID.Zero;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Exposing this is not particularly good, but it's one of the least evils at the moment to see
|
/// Exposing this is not particularly good, but it's one of the least evils at the moment to see
|
||||||
/// folder id from prim inventory item data, since it's not (yet) actually stored with the prim.
|
/// folder id from prim inventory item data, since it's not (yet) actually stored with the prim.
|
||||||
|
@ -58,8 +59,8 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
get { return m_folderID; }
|
get { return m_folderID; }
|
||||||
set { m_folderID = value; }
|
set { m_folderID = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Serial count for inventory file , used to tell if inventory has changed
|
/// Serial count for inventory file , used to tell if inventory has changed
|
||||||
/// no need for this to be part of Database backup
|
/// no need for this to be part of Database backup
|
||||||
|
@ -70,24 +71,24 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
get { return m_inventorySerial; }
|
get { return m_inventorySerial; }
|
||||||
set { m_inventorySerial = value; }
|
set { m_inventorySerial = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds in memory prim inventory
|
/// Holds in memory prim inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected TaskInventoryDictionary m_taskInventory = new TaskInventoryDictionary();
|
protected TaskInventoryDictionary m_taskInventory = new TaskInventoryDictionary();
|
||||||
|
|
||||||
public TaskInventoryDictionary TaskInventory
|
public TaskInventoryDictionary TaskInventory
|
||||||
{
|
{
|
||||||
get { return m_taskInventory; }
|
get { return m_taskInventory; }
|
||||||
set { m_taskInventory = value; }
|
set { m_taskInventory = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tracks whether inventory has changed since the last persistent backup
|
/// Tracks whether inventory has changed since the last persistent backup
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private bool HasInventoryChanged;
|
private bool HasInventoryChanged;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reset LLUUIDs for all the items in the prim's inventory. This involves either generating
|
/// Reset LLUUIDs for all the items in the prim's inventory. This involves either generating
|
||||||
/// new ones or setting existing UUIDs to the correct parent UUIDs
|
/// new ones or setting existing UUIDs to the correct parent UUIDs
|
||||||
|
@ -96,18 +97,18 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public void ResetInventoryIDs()
|
public void ResetInventoryIDs()
|
||||||
{
|
{
|
||||||
lock (TaskInventory)
|
lock (TaskInventory)
|
||||||
{
|
{
|
||||||
IList<TaskInventoryItem> items = new List<TaskInventoryItem>(TaskInventory.Values);
|
IList<TaskInventoryItem> items = new List<TaskInventoryItem>(TaskInventory.Values);
|
||||||
TaskInventory.Clear();
|
TaskInventory.Clear();
|
||||||
|
|
||||||
foreach (TaskInventoryItem item in items)
|
foreach (TaskInventoryItem item in items)
|
||||||
{
|
{
|
||||||
item.ResetIDs(UUID);
|
item.ResetIDs(UUID);
|
||||||
TaskInventory.Add(item.ItemID, item);
|
TaskInventory.Add(item.ItemID, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Start all the scripts contained in this prim's inventory
|
/// Start all the scripts contained in this prim's inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -139,7 +140,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Start a script which is in this prim's inventory.
|
/// Start a script which is in this prim's inventory.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -147,34 +148,36 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public void StartScript(TaskInventoryItem item)
|
public void StartScript(TaskInventoryItem item)
|
||||||
{
|
{
|
||||||
// m_log.InfoFormat(
|
// m_log.InfoFormat(
|
||||||
// "[PRIMINVENTORY]: " +
|
// "[PRIMINVENTORY]: " +
|
||||||
// "Starting script {0}, {1} in prim {2}, {3}",
|
// "Starting script {0}, {1} in prim {2}, {3}",
|
||||||
// item.Name, item.ItemID, Name, UUID);
|
// item.Name, item.ItemID, Name, UUID);
|
||||||
AddFlag(LLObject.ObjectFlags.Scripted);
|
AddFlag(LLObject.ObjectFlags.Scripted);
|
||||||
|
|
||||||
if (!((m_parentGroup.Scene.RegionInfo.EstateSettings.regionFlags & Simulator.RegionFlags.SkipScripts) == Simulator.RegionFlags.SkipScripts))
|
if (!((m_parentGroup.Scene.RegionInfo.EstateSettings.regionFlags & Simulator.RegionFlags.SkipScripts) == Simulator.RegionFlags.SkipScripts))
|
||||||
{
|
{
|
||||||
AssetBase rezAsset = m_parentGroup.Scene.AssetCache.GetAsset(item.AssetID, false);
|
AssetCache cache = m_parentGroup.Scene.AssetCache;
|
||||||
|
|
||||||
if (rezAsset != null)
|
cache.GetAsset(item.AssetID, delegate(LLUUID assetID, AssetBase asset)
|
||||||
{
|
{
|
||||||
|
if (asset.FullID == LLUUID.Zero)
|
||||||
string script = Helpers.FieldToUTF8String(rezAsset.Data);
|
{
|
||||||
m_parentGroup.Scene.EventManager.TriggerRezScript(LocalID, item.ItemID, script);
|
m_log.ErrorFormat(
|
||||||
m_parentGroup.AddActiveScriptCount(1);
|
"[PRIMINVENTORY]: " +
|
||||||
}
|
"Couldn't start script {0}, {1} since asset ID {2} could not be found",
|
||||||
else
|
item.Name, item.ItemID, item.AssetID);
|
||||||
{
|
}
|
||||||
m_log.ErrorFormat(
|
else
|
||||||
"[PRIMINVENTORY]: " +
|
{
|
||||||
"Couldn't start script {0}, {1} since asset ID {2} could not be found",
|
string script = Helpers.FieldToUTF8String(asset.Data);
|
||||||
item.Name, item.ItemID, item.AssetID);
|
m_parentGroup.Scene.EventManager.TriggerRezScript(LocalID,item.ItemID,script);
|
||||||
}
|
m_parentGroup.AddActiveScriptCount(1);
|
||||||
|
ScheduleFullUpdate();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
ScheduleFullUpdate();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Start a script which is in this prim's inventory.
|
/// Start a script which is in this prim's inventory.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -184,22 +187,22 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public void StartScript(LLUUID itemId)
|
public void StartScript(LLUUID itemId)
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (m_taskInventory)
|
||||||
{
|
{
|
||||||
if (m_taskInventory.ContainsKey(itemId))
|
if (m_taskInventory.ContainsKey(itemId))
|
||||||
{
|
{
|
||||||
StartScript(m_taskInventory[itemId]);
|
StartScript(m_taskInventory[itemId]);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.ErrorFormat(
|
m_log.ErrorFormat(
|
||||||
"[PRIMINVENTORY]: " +
|
"[PRIMINVENTORY]: " +
|
||||||
"Couldn't start script with ID {0} since it couldn't be found for prim {1}, {2}",
|
"Couldn't start script with ID {0} since it couldn't be found for prim {1}, {2}",
|
||||||
itemId, Name, UUID);
|
itemId, Name, UUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Stop a script which is in this prim's inventory.
|
/// Stop a script which is in this prim's inventory.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -210,15 +213,15 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
m_parentGroup.Scene.EventManager.TriggerRemoveScript(LocalID, itemId);
|
m_parentGroup.Scene.EventManager.TriggerRemoveScript(LocalID, itemId);
|
||||||
m_parentGroup.AddActiveScriptCount(-1);
|
m_parentGroup.AddActiveScriptCount(-1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.ErrorFormat(
|
m_log.ErrorFormat(
|
||||||
"[PRIMINVENTORY]: " +
|
"[PRIMINVENTORY]: " +
|
||||||
"Couldn't stop script with ID {0} since it couldn't be found for prim {1}, {2}",
|
"Couldn't stop script with ID {0} since it couldn't be found for prim {1}, {2}",
|
||||||
itemId, Name, UUID);
|
itemId, Name, UUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add an item to this prim's inventory.
|
/// Add an item to this prim's inventory.
|
||||||
|
@ -229,17 +232,17 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
item.ParentID = m_folderID;
|
item.ParentID = m_folderID;
|
||||||
item.CreationDate = 1000;
|
item.CreationDate = 1000;
|
||||||
item.ParentPartID = UUID;
|
item.ParentPartID = UUID;
|
||||||
|
|
||||||
lock (m_taskInventory)
|
lock (m_taskInventory)
|
||||||
{
|
{
|
||||||
m_taskInventory.Add(item.ItemID, item);
|
m_taskInventory.Add(item.ItemID, item);
|
||||||
TriggerScriptChangedEvent(Changed.INVENTORY);
|
TriggerScriptChangedEvent(Changed.INVENTORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_inventorySerial++;
|
m_inventorySerial++;
|
||||||
HasInventoryChanged = true;
|
HasInventoryChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Restore a whole collection of items to the prim's inventory at once.
|
/// Restore a whole collection of items to the prim's inventory at once.
|
||||||
/// We assume that the items already have all their fields correctly filled out.
|
/// We assume that the items already have all their fields correctly filled out.
|
||||||
|
@ -250,17 +253,17 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public void RestoreInventoryItems(ICollection<TaskInventoryItem> items)
|
public void RestoreInventoryItems(ICollection<TaskInventoryItem> items)
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (m_taskInventory)
|
||||||
{
|
{
|
||||||
foreach (TaskInventoryItem item in items)
|
foreach (TaskInventoryItem item in items)
|
||||||
{
|
{
|
||||||
m_taskInventory.Add(item.ItemID, item);
|
m_taskInventory.Add(item.ItemID, item);
|
||||||
TriggerScriptChangedEvent(Changed.INVENTORY);
|
TriggerScriptChangedEvent(Changed.INVENTORY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_inventorySerial++;
|
m_inventorySerial++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns an existing inventory item. Returns the original, so any changes will be live.
|
/// Returns an existing inventory item. Returns the original, so any changes will be live.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -269,7 +272,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public TaskInventoryItem GetInventoryItem(LLUUID itemID)
|
public TaskInventoryItem GetInventoryItem(LLUUID itemID)
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (m_taskInventory)
|
||||||
{
|
{
|
||||||
if (m_taskInventory.ContainsKey(itemID))
|
if (m_taskInventory.ContainsKey(itemID))
|
||||||
{
|
{
|
||||||
return m_taskInventory[itemID];
|
return m_taskInventory[itemID];
|
||||||
|
@ -295,15 +298,15 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public bool UpdateInventoryItem(TaskInventoryItem item)
|
public bool UpdateInventoryItem(TaskInventoryItem item)
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (m_taskInventory)
|
||||||
{
|
{
|
||||||
if (m_taskInventory.ContainsKey(item.ItemID))
|
if (m_taskInventory.ContainsKey(item.ItemID))
|
||||||
{
|
{
|
||||||
m_taskInventory[item.ItemID] = item;
|
m_taskInventory[item.ItemID] = item;
|
||||||
m_inventorySerial++;
|
m_inventorySerial++;
|
||||||
TriggerScriptChangedEvent(Changed.INVENTORY);
|
TriggerScriptChangedEvent(Changed.INVENTORY);
|
||||||
|
|
||||||
HasInventoryChanged = true;
|
HasInventoryChanged = true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -312,9 +315,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
"[PRIMINVENTORY]: " +
|
"[PRIMINVENTORY]: " +
|
||||||
"Tried to retrieve item ID {0} from prim {1}, {2} but the item does not exist in this inventory",
|
"Tried to retrieve item ID {0} from prim {1}, {2} but the item does not exist in this inventory",
|
||||||
item.ItemID, Name, UUID);
|
item.ItemID, Name, UUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,14 +335,14 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public int RemoveInventoryItem(LLUUID itemID)
|
public int RemoveInventoryItem(LLUUID itemID)
|
||||||
{
|
{
|
||||||
lock (m_taskInventory)
|
lock (m_taskInventory)
|
||||||
{
|
{
|
||||||
if (m_taskInventory.ContainsKey(itemID))
|
if (m_taskInventory.ContainsKey(itemID))
|
||||||
{
|
{
|
||||||
int type = m_taskInventory[itemID].InvType;
|
int type = m_taskInventory[itemID].InvType;
|
||||||
m_taskInventory.Remove(itemID);
|
m_taskInventory.Remove(itemID);
|
||||||
m_inventorySerial++;
|
m_inventorySerial++;
|
||||||
TriggerScriptChangedEvent(Changed.INVENTORY);
|
TriggerScriptChangedEvent(Changed.INVENTORY);
|
||||||
|
|
||||||
HasInventoryChanged = true;
|
HasInventoryChanged = true;
|
||||||
|
|
||||||
int scriptcount = 0;
|
int scriptcount = 0;
|
||||||
|
@ -359,7 +362,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
RemFlag(LLObject.ObjectFlags.Scripted);
|
RemFlag(LLObject.ObjectFlags.Scripted);
|
||||||
ScheduleFullUpdate();
|
ScheduleFullUpdate();
|
||||||
}
|
}
|
||||||
ScheduleFullUpdate();
|
ScheduleFullUpdate();
|
||||||
|
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
@ -369,7 +372,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
"[PRIMINVENTORY]: " +
|
"[PRIMINVENTORY]: " +
|
||||||
"Tried to remove item ID {0} from prim {1}, {2} but the item does not exist in this inventory",
|
"Tried to remove item ID {0} from prim {1}, {2} but the item does not exist in this inventory",
|
||||||
itemID, Name, UUID);
|
itemID, Name, UUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -384,7 +387,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
if (m_inventorySerial > 0)
|
if (m_inventorySerial > 0)
|
||||||
{
|
{
|
||||||
client.SendTaskInventory(m_uuid, (short) m_inventorySerial,
|
client.SendTaskInventory(m_uuid, (short)m_inventorySerial,
|
||||||
Helpers.StringToField(m_inventoryFileName));
|
Helpers.StringToField(m_inventoryFileName));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -399,15 +402,15 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
byte[] fileData = new byte[0];
|
byte[] fileData = new byte[0];
|
||||||
InventoryStringBuilder invString = new InventoryStringBuilder(m_folderID, UUID);
|
InventoryStringBuilder invString = new InventoryStringBuilder(m_folderID, UUID);
|
||||||
|
|
||||||
lock (m_taskInventory)
|
lock (m_taskInventory)
|
||||||
{
|
{
|
||||||
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
foreach (TaskInventoryItem item in m_taskInventory.Values)
|
||||||
{
|
{
|
||||||
invString.AddItemStart();
|
invString.AddItemStart();
|
||||||
invString.AddNameValueLine("item_id", item.ItemID.ToString());
|
invString.AddNameValueLine("item_id", item.ItemID.ToString());
|
||||||
invString.AddNameValueLine("parent_id", item.ParentID.ToString());
|
invString.AddNameValueLine("parent_id", item.ParentID.ToString());
|
||||||
|
|
||||||
invString.AddPermissionsStart();
|
invString.AddPermissionsStart();
|
||||||
invString.AddNameValueLine("base_mask", "0x7FFFFFFF");
|
invString.AddNameValueLine("base_mask", "0x7FFFFFFF");
|
||||||
invString.AddNameValueLine("owner_mask", "0x7FFFFFFF");
|
invString.AddNameValueLine("owner_mask", "0x7FFFFFFF");
|
||||||
|
@ -419,7 +422,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
invString.AddNameValueLine("last_owner_id", item.LastOwnerID.ToString());
|
invString.AddNameValueLine("last_owner_id", item.LastOwnerID.ToString());
|
||||||
invString.AddNameValueLine("group_id", item.GroupID.ToString());
|
invString.AddNameValueLine("group_id", item.GroupID.ToString());
|
||||||
invString.AddSectionEnd();
|
invString.AddSectionEnd();
|
||||||
|
|
||||||
invString.AddNameValueLine("asset_id", item.AssetID.ToString());
|
invString.AddNameValueLine("asset_id", item.AssetID.ToString());
|
||||||
invString.AddNameValueLine("type", TaskInventoryItem.Types[item.Type]);
|
invString.AddNameValueLine("type", TaskInventoryItem.Types[item.Type]);
|
||||||
invString.AddNameValueLine("inv_type", TaskInventoryItem.InvTypes[item.InvType]);
|
invString.AddNameValueLine("inv_type", TaskInventoryItem.InvTypes[item.InvType]);
|
||||||
|
@ -430,18 +433,18 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
invString.AddSectionEnd();
|
invString.AddSectionEnd();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fileData = Helpers.StringToField(invString.BuildString);
|
fileData = Helpers.StringToField(invString.BuildString);
|
||||||
|
|
||||||
// m_log.InfoFormat(
|
// m_log.InfoFormat(
|
||||||
// "[PRIMINVENTORY]: RequestInventoryFile fileData: {0}", Helpers.FieldToUTF8String(fileData));
|
// "[PRIMINVENTORY]: RequestInventoryFile fileData: {0}", Helpers.FieldToUTF8String(fileData));
|
||||||
|
|
||||||
if (fileData.Length > 2)
|
if (fileData.Length > 2)
|
||||||
{
|
{
|
||||||
xferManager.AddNewFile(m_inventoryFileName, fileData);
|
xferManager.AddNewFile(m_inventoryFileName, fileData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Process inventory backup
|
/// Process inventory backup
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -454,10 +457,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
datastore.StorePrimInventory(UUID, TaskInventory.Values);
|
datastore.StorePrimInventory(UUID, TaskInventory.Values);
|
||||||
}
|
}
|
||||||
|
|
||||||
HasInventoryChanged = false;
|
HasInventoryChanged = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InventoryStringBuilder
|
public class InventoryStringBuilder
|
||||||
{
|
{
|
||||||
|
@ -505,6 +508,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue