aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-07-17 23:31:38 +0100
committerJustin Clark-Casey (justincc)2012-07-17 23:31:38 +0100
commitecb759c1e5b0ea3e1c81310acf3fe31561d2be3a (patch)
treea244524b6c69c3524f3470b668092cc758d214a1
parentRevert "refactor: make llGiveInventory() use existing GetInventoryItem() meth... (diff)
downloadopensim-SC-ecb759c1e5b0ea3e1c81310acf3fe31561d2be3a.zip
opensim-SC-ecb759c1e5b0ea3e1c81310acf3fe31561d2be3a.tar.gz
opensim-SC-ecb759c1e5b0ea3e1c81310acf3fe31561d2be3a.tar.bz2
opensim-SC-ecb759c1e5b0ea3e1c81310acf3fe31561d2be3a.tar.xz
Fix regression where llGiveInventory() had stopped asking non-owner receivers to accept/decline.
This appears to be a regression from back in commit db91044 (Mon Aug 22 2011) where we started to send TaskInventoryOffered msg dialog rather than InventoryOffered dialog. This is probably correct, but failed because the bucket was too large and because we wouldn't have handled the TaskInventoryDeclined option anyway. This patch handles both of these and make llGiveInventoryList() use TaskInventoryOffered as well Fixes http://opensimulator.org/mantis/view.php?id=6089
-rw-r--r--OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs19
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs4
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs58
3 files changed, 43 insertions, 38 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
index 0dad3c4..596174b 100644
--- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
@@ -137,13 +137,15 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
137 foreach (Scene scene in m_Scenes) 137 foreach (Scene scene in m_Scenes)
138 { 138 {
139// m_log.DebugFormat( 139// m_log.DebugFormat(
140// "[INSTANT MESSAGE]: Looking for root agent {0} in {1}", 140// "[INSTANT MESSAGE]: Looking for root agent {0} in {1}",
141// toAgentID.ToString(), scene.RegionInfo.RegionName); 141// toAgentID.ToString(), scene.RegionInfo.RegionName);
142
142 ScenePresence sp = scene.GetScenePresence(toAgentID); 143 ScenePresence sp = scene.GetScenePresence(toAgentID);
143 if (sp != null && !sp.IsChildAgent) 144 if (sp != null && !sp.IsChildAgent)
144 { 145 {
145 // Local message 146 // Local message
146// m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to root agent {0} {1}", user.Name, toAgentID); 147 m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to root agent {0} {1}", sp.Name, toAgentID);
148
147 sp.ControllingClient.SendInstantMessage(im); 149 sp.ControllingClient.SendInstantMessage(im);
148 150
149 // Message sent 151 // Message sent
@@ -155,13 +157,15 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
155 // try child avatar second 157 // try child avatar second
156 foreach (Scene scene in m_Scenes) 158 foreach (Scene scene in m_Scenes)
157 { 159 {
158// m_log.DebugFormat( 160 m_log.DebugFormat(
159// "[INSTANT MESSAGE]: Looking for child of {0} in {1}", toAgentID, scene.RegionInfo.RegionName); 161 "[INSTANT MESSAGE]: Looking for child of {0} in {1}", toAgentID, scene.RegionInfo.RegionName);
162
160 ScenePresence sp = scene.GetScenePresence(toAgentID); 163 ScenePresence sp = scene.GetScenePresence(toAgentID);
161 if (sp != null) 164 if (sp != null)
162 { 165 {
163 // Local message 166 // Local message
164// m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to child agent {0} {1}", user.Name, toAgentID); 167 m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to child agent {0} {1}", sp.Name, toAgentID);
168
165 sp.ControllingClient.SendInstantMessage(im); 169 sp.ControllingClient.SendInstantMessage(im);
166 170
167 // Message sent 171 // Message sent
@@ -170,10 +174,9 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
170 } 174 }
171 } 175 }
172 176
173// m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to {0} via XMLRPC", im.toAgentID); 177 m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to {0} via XMLRPC", im.toAgentID);
174 SendGridInstantMessageViaXMLRPC(im, result);
175 178
176 return; 179 SendGridInstantMessageViaXMLRPC(im, result);
177 } 180 }
178 181
179 private void HandleUndeliveredMessage(GridInstantMessage im, MessageResultNotification result) 182 private void HandleUndeliveredMessage(GridInstantMessage im, MessageResultNotification result)
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
index 19c774f..f3af59a 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
@@ -297,7 +297,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
297 }); 297 });
298 } 298 }
299 } 299 }
300 else if (im.dialog == (byte) InstantMessageDialog.InventoryDeclined) 300 else if (
301 im.dialog == (byte)InstantMessageDialog.InventoryDeclined
302 || im.dialog == (byte)InstantMessageDialog.TaskInventoryDeclined)
301 { 303 {
302 // Here, the recipient is local and we can assume that the 304 // Here, the recipient is local and we can assume that the
303 // inventory is loaded. Courtesy of the above bulk update, 305 // inventory is loaded. Courtesy of the above bulk update,
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index c1ac0e5..b43e8e7 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -3988,22 +3988,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3988 if (agentItem == null) 3988 if (agentItem == null)
3989 return; 3989 return;
3990 3990
3991 byte[] bucket = new byte[17];
3992 bucket[0] = (byte)assetType;
3993 byte[] objBytes = agentItem.ID.GetBytes();
3994 Array.Copy(objBytes, 0, bucket, 1, 16);
3995
3996 GridInstantMessage msg = new GridInstantMessage(World,
3997 m_host.UUID, m_host.Name+", an object owned by "+
3998 resolveName(m_host.OwnerID)+",", destId,
3999 (byte)InstantMessageDialog.TaskInventoryOffered,
4000 false, objName+"\n"+m_host.Name+" is located at "+
4001 World.RegionInfo.RegionName+" "+
4002 m_host.AbsolutePosition.ToString(),
4003 agentItem.ID, true, m_host.AbsolutePosition,
4004 bucket);
4005 if (m_TransferModule != null) 3991 if (m_TransferModule != null)
3992 {
3993 byte[] bucket = new byte[] { (byte)assetType };
3994
3995 GridInstantMessage msg = new GridInstantMessage(World,
3996 m_host.UUID, m_host.Name + ", an object owned by " +
3997 resolveName(m_host.OwnerID) + ",", destId,
3998 (byte)InstantMessageDialog.TaskInventoryOffered,
3999 false, objName + "\n" + m_host.Name + " is located at " +
4000 World.RegionInfo.RegionName + " " +
4001 m_host.AbsolutePosition.ToString(),
4002 agentItem.ID, true, m_host.AbsolutePosition,
4003 bucket);
4004
4006 m_TransferModule.SendInstantMessage(msg, delegate(bool success) {}); 4005 m_TransferModule.SendInstantMessage(msg, delegate(bool success) {});
4006 }
4007
4007 ScriptSleep(3000); 4008 ScriptSleep(3000);
4008 } 4009 }
4009 } 4010 }
@@ -6410,23 +6411,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6410 if (folderID == UUID.Zero) 6411 if (folderID == UUID.Zero)
6411 return; 6412 return;
6412 6413
6413 byte[] bucket = new byte[17];
6414 bucket[0] = (byte)AssetType.Folder;
6415 byte[] objBytes = folderID.GetBytes();
6416 Array.Copy(objBytes, 0, bucket, 1, 16);
6417
6418 GridInstantMessage msg = new GridInstantMessage(World,
6419 m_host.UUID, m_host.Name + ", an object owned by " +
6420 resolveName(m_host.OwnerID) + ",", destID,
6421 (byte)InstantMessageDialog.InventoryOffered,
6422 false, category + "\n" + m_host.Name + " is located at " +
6423 World.RegionInfo.RegionName + " " +
6424 m_host.AbsolutePosition.ToString(),
6425 folderID, true, m_host.AbsolutePosition,
6426 bucket);
6427
6428 if (m_TransferModule != null) 6414 if (m_TransferModule != null)
6415 {
6416 byte[] bucket = new byte[] { (byte)AssetType.Folder };
6417
6418 GridInstantMessage msg = new GridInstantMessage(World,
6419 m_host.UUID, m_host.Name + ", an object owned by " +
6420 resolveName(m_host.OwnerID) + ",", destID,
6421 (byte)InstantMessageDialog.TaskInventoryOffered,
6422 false, category + "\n" + m_host.Name + " is located at " +
6423 World.RegionInfo.RegionName + " " +
6424 m_host.AbsolutePosition.ToString(),
6425 folderID, true, m_host.AbsolutePosition,
6426 bucket);
6427
6429 m_TransferModule.SendInstantMessage(msg, delegate(bool success) {}); 6428 m_TransferModule.SendInstantMessage(msg, delegate(bool success) {});
6429 }
6430 } 6430 }
6431 6431
6432 public void llSetVehicleType(int type) 6432 public void llSetVehicleType(int type)