diff options
author | Justin Clark-Casey (justincc) | 2012-07-17 23:31:38 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-07-17 23:31:38 +0100 |
commit | ecb759c1e5b0ea3e1c81310acf3fe31561d2be3a (patch) | |
tree | a244524b6c69c3524f3470b668092cc758d214a1 | |
parent | Revert "refactor: make llGiveInventory() use existing GetInventoryItem() meth... (diff) | |
download | opensim-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
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) |