diff options
Diffstat (limited to 'OpenSim/Region')
8 files changed, 171 insertions, 42 deletions
diff --git a/OpenSim/Region/Communications/Hypergrid/HGInventoryService.cs b/OpenSim/Region/Communications/Hypergrid/HGInventoryService.cs index 2e402a4..a2b2c84 100644 --- a/OpenSim/Region/Communications/Hypergrid/HGInventoryService.cs +++ b/OpenSim/Region/Communications/Hypergrid/HGInventoryService.cs | |||
@@ -113,6 +113,17 @@ namespace OpenSim.Region.Communications.Hypergrid | |||
113 | 113 | ||
114 | m_log.ErrorFormat("[HGrid INVENTORY SERVICE]: Request inventory operation failed, {0} {1}", | 114 | m_log.ErrorFormat("[HGrid INVENTORY SERVICE]: Request inventory operation failed, {0} {1}", |
115 | e.Source, e.Message); | 115 | e.Source, e.Message); |
116 | |||
117 | // Well, let's synthesize one | ||
118 | InventoryCollection icol = new InventoryCollection(); | ||
119 | icol.UserID = userID; | ||
120 | icol.Items = new List<InventoryItemBase>(); | ||
121 | icol.Folders = new List<InventoryFolderBase>(); | ||
122 | InventoryFolderBase rootFolder = new InventoryFolderBase(); | ||
123 | rootFolder.ID = UUID.Random(); | ||
124 | rootFolder.Owner = userID; | ||
125 | icol.Folders.Add(rootFolder); | ||
126 | InventoryResponse(icol); | ||
116 | } | 127 | } |
117 | } | 128 | } |
118 | else | 129 | else |
diff --git a/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs b/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs index fb293e8..1e430e5 100644 --- a/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs +++ b/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs | |||
@@ -244,6 +244,19 @@ namespace OpenSim.Region.CoreModules.Communications.Local | |||
244 | return false; | 244 | return false; |
245 | } | 245 | } |
246 | 246 | ||
247 | public bool SendCreateObject(ulong regionHandle, UUID userID, UUID itemID) | ||
248 | { | ||
249 | foreach (Scene s in m_sceneList) | ||
250 | { | ||
251 | if (s.RegionInfo.RegionHandle == regionHandle) | ||
252 | { | ||
253 | return s.IncomingCreateObject(userID, itemID); | ||
254 | } | ||
255 | } | ||
256 | return false; | ||
257 | } | ||
258 | |||
259 | |||
247 | /** | 260 | /** |
248 | * Region-related communications | 261 | * Region-related communications |
249 | */ | 262 | */ |
diff --git a/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs b/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs index b507bdd..90104f2 100644 --- a/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs +++ b/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs | |||
@@ -276,6 +276,12 @@ namespace OpenSim.Region.CoreModules.Communications.REST | |||
276 | return false; | 276 | return false; |
277 | } | 277 | } |
278 | 278 | ||
279 | public bool SendCreateObject(ulong regionHandle, UUID userID, UUID itemID) | ||
280 | { | ||
281 | // Not Implemented | ||
282 | return false; | ||
283 | } | ||
284 | |||
279 | /** | 285 | /** |
280 | * Region-related communications | 286 | * Region-related communications |
281 | */ | 287 | */ |
@@ -527,13 +533,13 @@ namespace OpenSim.Region.CoreModules.Communications.REST | |||
527 | 533 | ||
528 | public Hashtable ObjectHandler(Hashtable request) | 534 | public Hashtable ObjectHandler(Hashtable request) |
529 | { | 535 | { |
530 | //m_log.Debug("[CONNECTION DEBUGGING]: ObjectHandler Called"); | 536 | m_log.Debug("[CONNECTION DEBUGGING]: ObjectHandler Called"); |
531 | 537 | ||
532 | //m_log.Debug("---------------------------"); | 538 | m_log.Debug("---------------------------"); |
533 | //m_log.Debug(" >> uri=" + request["uri"]); | 539 | m_log.Debug(" >> uri=" + request["uri"]); |
534 | //m_log.Debug(" >> content-type=" + request["content-type"]); | 540 | m_log.Debug(" >> content-type=" + request["content-type"]); |
535 | //m_log.Debug(" >> http-method=" + request["http-method"]); | 541 | m_log.Debug(" >> http-method=" + request["http-method"]); |
536 | //m_log.Debug("---------------------------\n"); | 542 | m_log.Debug("---------------------------\n"); |
537 | 543 | ||
538 | Hashtable responsedata = new Hashtable(); | 544 | Hashtable responsedata = new Hashtable(); |
539 | responsedata["content_type"] = "text/html"; | 545 | responsedata["content_type"] = "text/html"; |
@@ -557,11 +563,11 @@ namespace OpenSim.Region.CoreModules.Communications.REST | |||
557 | DoObjectPost(request, responsedata, regionHandle); | 563 | DoObjectPost(request, responsedata, regionHandle); |
558 | return responsedata; | 564 | return responsedata; |
559 | } | 565 | } |
560 | //else if (method.Equals("PUT")) | 566 | else if (method.Equals("PUT")) |
561 | //{ | 567 | { |
562 | // DoObjectPut(request, responsedata, agentID); | 568 | DoObjectPut(request, responsedata, regionHandle); |
563 | // return responsedata; | 569 | return responsedata; |
564 | //} | 570 | } |
565 | //else if (method.Equals("DELETE")) | 571 | //else if (method.Equals("DELETE")) |
566 | //{ | 572 | //{ |
567 | // DoObjectDelete(request, responsedata, agentID, action, regionHandle); | 573 | // DoObjectDelete(request, responsedata, agentID, action, regionHandle); |
@@ -632,6 +638,31 @@ namespace OpenSim.Region.CoreModules.Communications.REST | |||
632 | responsedata["str_response_string"] = result.ToString(); | 638 | responsedata["str_response_string"] = result.ToString(); |
633 | } | 639 | } |
634 | 640 | ||
641 | protected virtual void DoObjectPut(Hashtable request, Hashtable responsedata, ulong regionhandle) | ||
642 | { | ||
643 | OSDMap args = RegionClient.GetOSDMap((string)request["body"]); | ||
644 | if (args == null) | ||
645 | { | ||
646 | responsedata["int_response_code"] = 400; | ||
647 | responsedata["str_response_string"] = "false"; | ||
648 | return; | ||
649 | } | ||
650 | |||
651 | UUID userID = UUID.Zero, itemID = UUID.Zero; | ||
652 | if (args["userid"] != null) | ||
653 | userID = args["userid"].AsUUID(); | ||
654 | if (args["itemid"] != null) | ||
655 | itemID = args["itemid"].AsUUID(); | ||
656 | |||
657 | UUID regionID = m_localBackend.GetRegionID(regionhandle); | ||
658 | |||
659 | // This is the meaning of PUT object | ||
660 | bool result = m_localBackend.SendCreateObject(regionhandle, userID, itemID); | ||
661 | |||
662 | responsedata["int_response_code"] = 200; | ||
663 | responsedata["str_response_string"] = result.ToString(); | ||
664 | } | ||
665 | |||
635 | /* | 666 | /* |
636 | * Region-related incoming calls | 667 | * Region-related incoming calls |
637 | * | 668 | * |
diff --git a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryModule.cs b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryModule.cs index 741075c..3675583 100644 --- a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryModule.cs +++ b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryModule.cs | |||
@@ -54,6 +54,7 @@ namespace OpenSim.Region.CoreModules.Hypergrid | |||
54 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 54 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
55 | private static bool initialized = false; | 55 | private static bool initialized = false; |
56 | private static bool enabled = false; | 56 | private static bool enabled = false; |
57 | private static bool safemode = false; | ||
57 | 58 | ||
58 | private bool m_doLookup = false; | 59 | private bool m_doLookup = false; |
59 | Scene m_scene; | 60 | Scene m_scene; |
@@ -77,6 +78,8 @@ namespace OpenSim.Region.CoreModules.Hypergrid | |||
77 | 78 | ||
78 | // This module is only on for standalones | 79 | // This module is only on for standalones |
79 | enabled = !config.Configs["Startup"].GetBoolean("gridmode", true) && config.Configs["Startup"].GetBoolean("hypergrid", false); | 80 | enabled = !config.Configs["Startup"].GetBoolean("gridmode", true) && config.Configs["Startup"].GetBoolean("hypergrid", false); |
81 | if (config.Configs["Hypergrid"] != null) | ||
82 | safemode = config.Configs["Hypergrid"].GetBoolean("safemode", false); | ||
80 | } | 83 | } |
81 | } | 84 | } |
82 | 85 | ||
@@ -116,34 +119,35 @@ namespace OpenSim.Region.CoreModules.Hypergrid | |||
116 | 119 | ||
117 | public virtual void AddHttpHandlers(IHttpServer httpServer) | 120 | public virtual void AddHttpHandlers(IHttpServer httpServer) |
118 | { | 121 | { |
119 | 122 | if (!safemode) | |
120 | httpServer.AddStreamHandler( | 123 | { |
121 | new RestDeserialiseSecureHandler<Guid, InventoryCollection>( | 124 | httpServer.AddStreamHandler( |
122 | "POST", "/GetInventory/", m_inventoryService.GetUserInventory, CheckAuthSession)); | 125 | new RestDeserialiseSecureHandler<Guid, InventoryCollection>( |
126 | "POST", "/GetInventory/", m_inventoryService.GetUserInventory, CheckAuthSession)); | ||
127 | httpServer.AddStreamHandler( | ||
128 | new RestDeserialiseSecureHandler<InventoryItemBase, bool>( | ||
129 | "POST", "/DeleteItem/", m_inventoryBase.DeleteItem, CheckAuthSession)); | ||
130 | httpServer.AddStreamHandler( | ||
131 | new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( | ||
132 | "POST", "/UpdateFolder/", m_inventoryBase.UpdateFolder, CheckAuthSession)); | ||
133 | |||
134 | httpServer.AddStreamHandler( | ||
135 | new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( | ||
136 | "POST", "/MoveFolder/", m_inventoryBase.MoveFolder, CheckAuthSession)); | ||
137 | |||
138 | httpServer.AddStreamHandler( | ||
139 | new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( | ||
140 | "POST", "/PurgeFolder/", m_inventoryBase.PurgeFolder, CheckAuthSession)); | ||
141 | } | ||
123 | 142 | ||
124 | httpServer.AddStreamHandler( | 143 | httpServer.AddStreamHandler( |
125 | new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( | 144 | new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( |
126 | "POST", "/NewFolder/", m_inventoryBase.AddFolder, CheckAuthSession)); | 145 | "POST", "/NewFolder/", m_inventoryBase.AddFolder, CheckAuthSession)); |
127 | 146 | ||
128 | httpServer.AddStreamHandler( | 147 | httpServer.AddStreamHandler( |
129 | new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( | ||
130 | "POST", "/UpdateFolder/", m_inventoryBase.UpdateFolder, CheckAuthSession)); | ||
131 | |||
132 | httpServer.AddStreamHandler( | ||
133 | new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( | ||
134 | "POST", "/MoveFolder/", m_inventoryBase.MoveFolder, CheckAuthSession)); | ||
135 | |||
136 | httpServer.AddStreamHandler( | ||
137 | new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( | ||
138 | "POST", "/PurgeFolder/", m_inventoryBase.PurgeFolder, CheckAuthSession)); | ||
139 | |||
140 | httpServer.AddStreamHandler( | ||
141 | new RestDeserialiseSecureHandler<InventoryItemBase, bool>( | 148 | new RestDeserialiseSecureHandler<InventoryItemBase, bool>( |
142 | "POST", "/NewItem/", m_inventoryBase.AddItem, CheckAuthSession)); | 149 | "POST", "/NewItem/", m_inventoryBase.AddItem, CheckAuthSession)); |
143 | 150 | ||
144 | httpServer.AddStreamHandler( | ||
145 | new RestDeserialiseSecureHandler<InventoryItemBase, bool>( | ||
146 | "POST", "/DeleteItem/", m_inventoryBase.DeleteItem, CheckAuthSession)); | ||
147 | 151 | ||
148 | } | 152 | } |
149 | 153 | ||
diff --git a/OpenSim/Region/Framework/Interfaces/IInterregionComms.cs b/OpenSim/Region/Framework/Interfaces/IInterregionComms.cs index ef3cb51..b57b5ed 100644 --- a/OpenSim/Region/Framework/Interfaces/IInterregionComms.cs +++ b/OpenSim/Region/Framework/Interfaces/IInterregionComms.cs | |||
@@ -89,6 +89,16 @@ namespace OpenSim.Region.Framework.Interfaces | |||
89 | /// <returns></returns> | 89 | /// <returns></returns> |
90 | bool SendCreateObject(ulong regionHandle, ISceneObject sog, bool isLocalCall); | 90 | bool SendCreateObject(ulong regionHandle, ISceneObject sog, bool isLocalCall); |
91 | 91 | ||
92 | /// <summary> | ||
93 | /// Create an object from the user's inventory in the destination region. | ||
94 | /// This message is used primarily for prim crossing. | ||
95 | /// </summary> | ||
96 | /// <param name="regionHandle"></param> | ||
97 | /// <param name="sog"></param> | ||
98 | /// <param name="isLocalCall"></param> | ||
99 | /// <returns></returns> | ||
100 | bool SendCreateObject(ulong regionHandle, UUID userID, UUID itemID); | ||
101 | |||
92 | #endregion Objects | 102 | #endregion Objects |
93 | 103 | ||
94 | #region Regions | 104 | #region Regions |
diff --git a/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs b/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs index e9106e5..b192101 100644 --- a/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs +++ b/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs | |||
@@ -33,6 +33,7 @@ using log4net; | |||
33 | using OpenMetaverse; | 33 | using OpenMetaverse; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications.Cache; | 35 | using OpenSim.Framework.Communications.Cache; |
36 | using OpenSim.Framework.Communications.Clients; | ||
36 | 37 | ||
37 | //using HyperGrid.Framework; | 38 | //using HyperGrid.Framework; |
38 | //using OpenSim.Region.Communications.Hypergrid; | 39 | //using OpenSim.Region.Communications.Hypergrid; |
@@ -50,6 +51,10 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
50 | // This maps between asset UUIDs and asset servers | 51 | // This maps between asset UUIDs and asset servers |
51 | private Dictionary<UUID, GridAssetClient> m_assetMap = new Dictionary<UUID, GridAssetClient>(); | 52 | private Dictionary<UUID, GridAssetClient> m_assetMap = new Dictionary<UUID, GridAssetClient>(); |
52 | 53 | ||
54 | // This maps between inventory server urls and inventory server clients | ||
55 | private Dictionary<string, InventoryClient> m_inventoryServers = new Dictionary<string, InventoryClient>(); | ||
56 | |||
57 | |||
53 | private Scene m_scene; | 58 | private Scene m_scene; |
54 | #endregion | 59 | #endregion |
55 | 60 | ||
@@ -72,6 +77,14 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
72 | return null; | 77 | return null; |
73 | } | 78 | } |
74 | 79 | ||
80 | private string UserInventoryURL(UUID userID) | ||
81 | { | ||
82 | CachedUserInfo uinfo = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(userID); | ||
83 | if (uinfo != null) | ||
84 | return (uinfo.UserProfile.UserInventoryURI == "") ? null : uinfo.UserProfile.UserInventoryURI; | ||
85 | return null; | ||
86 | } | ||
87 | |||
75 | private bool IsLocalUser(UUID userID) | 88 | private bool IsLocalUser(UUID userID) |
76 | { | 89 | { |
77 | CachedUserInfo uinfo = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(userID); | 90 | CachedUserInfo uinfo = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(userID); |
@@ -275,9 +288,9 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
275 | 288 | ||
276 | #region Public interface | 289 | #region Public interface |
277 | 290 | ||
278 | public void Get(UUID itemID, UUID ownerID) | 291 | public void Get(UUID assetID, UUID ownerID) |
279 | { | 292 | { |
280 | if (!IsInAssetMap(itemID) && !IsLocalUser(ownerID)) | 293 | if (!IsInAssetMap(assetID) && !IsLocalUser(ownerID)) |
281 | { | 294 | { |
282 | // Get the item from the remote asset server onto the local AssetCache | 295 | // Get the item from the remote asset server onto the local AssetCache |
283 | // and place an entry in m_assetMap | 296 | // and place an entry in m_assetMap |
@@ -295,11 +308,11 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
295 | m_assetServers.Add(userAssetURL, asscli); | 308 | m_assetServers.Add(userAssetURL, asscli); |
296 | } | 309 | } |
297 | 310 | ||
298 | m_log.Debug("[HGScene]: Fetching object " + itemID + " to asset server " + userAssetURL); | 311 | m_log.Debug("[HGScene]: Fetching object " + assetID + " to asset server " + userAssetURL); |
299 | bool success = FetchAsset(asscli, itemID, false); // asscli.RequestAsset(item.ItemID, false); | 312 | bool success = FetchAsset(asscli, assetID, false); // asscli.RequestAsset(item.ItemID, false); |
300 | 313 | ||
301 | // OK, now fetch the inside. | 314 | // OK, now fetch the inside. |
302 | Dictionary<UUID, bool> ids = SniffUUIDs(itemID); | 315 | Dictionary<UUID, bool> ids = SniffUUIDs(assetID); |
303 | Dump(ids); | 316 | Dump(ids); |
304 | foreach (KeyValuePair<UUID, bool> kvp in ids) | 317 | foreach (KeyValuePair<UUID, bool> kvp in ids) |
305 | FetchAsset(asscli, kvp.Key, kvp.Value); | 318 | FetchAsset(asscli, kvp.Key, kvp.Value); |
@@ -308,7 +321,7 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
308 | if (success) | 321 | if (success) |
309 | { | 322 | { |
310 | m_log.Debug("[HGScene]: Successfully fetched item from remote asset server " + userAssetURL); | 323 | m_log.Debug("[HGScene]: Successfully fetched item from remote asset server " + userAssetURL); |
311 | m_assetMap.Add(itemID, asscli); | 324 | m_assetMap.Add(assetID, asscli); |
312 | } | 325 | } |
313 | else | 326 | else |
314 | m_log.Warn("[HGScene]: Could not fetch asset from remote asset server " + userAssetURL); | 327 | m_log.Warn("[HGScene]: Could not fetch asset from remote asset server " + userAssetURL); |
@@ -318,7 +331,36 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
318 | } | 331 | } |
319 | } | 332 | } |
320 | 333 | ||
321 | public void Post(UUID itemID, UUID ownerID) | 334 | public InventoryItemBase Get(InventoryItemBase item, UUID rootFolder, CachedUserInfo userInfo) |
335 | { | ||
336 | if (!IsLocalUser(item.Owner)) | ||
337 | { | ||
338 | InventoryClient invCli = null; | ||
339 | string inventoryURL = UserInventoryURL(item.Owner); | ||
340 | if (!m_inventoryServers.TryGetValue(inventoryURL, out invCli)) | ||
341 | { | ||
342 | m_log.Debug("[HGScene]: Starting new InventorytClient for " + inventoryURL); | ||
343 | invCli = new InventoryClient(inventoryURL); | ||
344 | m_inventoryServers.Add(inventoryURL, invCli); | ||
345 | } | ||
346 | |||
347 | item = invCli.GetInventoryItem(item); | ||
348 | if (item != null) | ||
349 | { | ||
350 | // Change the folder, stick it in root folder, all items flattened out here in this region cache | ||
351 | item.Folder = rootFolder; | ||
352 | //userInfo.AddItem(item); don't use this, it calls back to the inventory server | ||
353 | lock (userInfo.RootFolder.Items) | ||
354 | { | ||
355 | userInfo.RootFolder.Items[item.ID] = item; | ||
356 | } | ||
357 | |||
358 | } | ||
359 | } | ||
360 | return item; | ||
361 | } | ||
362 | |||
363 | public void Post(UUID assetID, UUID ownerID) | ||
322 | { | 364 | { |
323 | if (!IsLocalUser(ownerID)) | 365 | if (!IsLocalUser(ownerID)) |
324 | { | 366 | { |
@@ -337,11 +379,11 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
337 | asscli.SetReceiver(m_scene.CommsManager.AssetCache); // Straight to the asset cache! | 379 | asscli.SetReceiver(m_scene.CommsManager.AssetCache); // Straight to the asset cache! |
338 | m_assetServers.Add(userAssetURL, asscli); | 380 | m_assetServers.Add(userAssetURL, asscli); |
339 | } | 381 | } |
340 | m_log.Debug("[HGScene]: Posting object " + itemID + " to asset server " + userAssetURL); | 382 | m_log.Debug("[HGScene]: Posting object " + assetID + " to asset server " + userAssetURL); |
341 | bool success = PostAsset(asscli, itemID); | 383 | bool success = PostAsset(asscli, assetID); |
342 | 384 | ||
343 | // Now the inside | 385 | // Now the inside |
344 | Dictionary<UUID, bool> ids = SniffUUIDs(itemID); | 386 | Dictionary<UUID, bool> ids = SniffUUIDs(assetID); |
345 | Dump(ids); | 387 | Dump(ids); |
346 | foreach (KeyValuePair<UUID, bool> kvp in ids) | 388 | foreach (KeyValuePair<UUID, bool> kvp in ids) |
347 | PostAsset(asscli, kvp.Key); | 389 | PostAsset(asscli, kvp.Key); |
@@ -349,8 +391,8 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
349 | if (success) | 391 | if (success) |
350 | { | 392 | { |
351 | m_log.Debug("[HGScene]: Successfully posted item to remote asset server " + userAssetURL); | 393 | m_log.Debug("[HGScene]: Successfully posted item to remote asset server " + userAssetURL); |
352 | if (!m_assetMap.ContainsKey(itemID)) | 394 | if (!m_assetMap.ContainsKey(assetID)) |
353 | m_assetMap.Add(itemID, asscli); | 395 | m_assetMap.Add(assetID, asscli); |
354 | } | 396 | } |
355 | else | 397 | else |
356 | m_log.Warn("[HGScene]: Could not post asset to remote asset server " + userAssetURL); | 398 | m_log.Warn("[HGScene]: Could not post asset to remote asset server " + userAssetURL); |
diff --git a/OpenSim/Region/Framework/Scenes/Hypergrid/HGScene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Hypergrid/HGScene.Inventory.cs index 93b81e0..4fde9bb 100644 --- a/OpenSim/Region/Framework/Scenes/Hypergrid/HGScene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Hypergrid/HGScene.Inventory.cs | |||
@@ -120,6 +120,13 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
120 | { | 120 | { |
121 | InventoryItemBase item = userInfo.RootFolder.FindItem(itemID); | 121 | InventoryItemBase item = userInfo.RootFolder.FindItem(itemID); |
122 | 122 | ||
123 | if (item == null) | ||
124 | { // Fetch the item | ||
125 | item = new InventoryItemBase(); | ||
126 | item.Owner = remoteClient.AgentId; | ||
127 | item.ID = itemID; | ||
128 | item = m_assMapper.Get(item, userInfo.RootFolder.ID, userInfo); | ||
129 | } | ||
123 | if (item != null) | 130 | if (item != null) |
124 | { | 131 | { |
125 | m_assMapper.Get(item.AssetID, remoteClient.AgentId); | 132 | m_assMapper.Get(item.AssetID, remoteClient.AgentId); |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 5f68ccb..30257f1 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1731,6 +1731,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
1731 | return true; | 1731 | return true; |
1732 | } | 1732 | } |
1733 | 1733 | ||
1734 | public virtual bool IncomingCreateObject(UUID userID, UUID itemID) | ||
1735 | { | ||
1736 | ScenePresence sp = GetScenePresence(userID); | ||
1737 | if (sp != null) | ||
1738 | { | ||
1739 | uint attPt = (uint)sp.Appearance.GetAttachpoint(itemID); | ||
1740 | SceneObjectGroup sog = m_sceneGraph.RezSingleAttachment(sp.ControllingClient, itemID, attPt); | ||
1741 | } | ||
1742 | return false; | ||
1743 | } | ||
1744 | |||
1734 | public bool AddSceneObject(UUID primID, SceneObjectGroup sceneObject) | 1745 | public bool AddSceneObject(UUID primID, SceneObjectGroup sceneObject) |
1735 | { | 1746 | { |
1736 | // If the user is banned, we won't let any of their objects | 1747 | // If the user is banned, we won't let any of their objects |