aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2010-07-14 17:13:04 +0100
committerJustin Clark-Casey (justincc)2010-07-14 17:13:04 +0100
commit0080c3b1f4467224885323e7198c91d7e221f75b (patch)
tree82fcfd5dd7fd3c9df8c467e5a423b792357384b3 /OpenSim/Region/CoreModules
parentFix obvious bug in XInventoryService.GetFolderItems() which was preventing th... (diff)
parentMerge branch 'master' of melanie@opensimulator.org:/var/git/opensim (diff)
downloadopensim-SC-0080c3b1f4467224885323e7198c91d7e221f75b.zip
opensim-SC-0080c3b1f4467224885323e7198c91d7e221f75b.tar.gz
opensim-SC-0080c3b1f4467224885323e7198c91d7e221f75b.tar.bz2
opensim-SC-0080c3b1f4467224885323e7198c91d7e221f75b.tar.xz
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs53
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs34
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandObject.cs4
3 files changed, 54 insertions, 37 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 2057c65..1a7da61 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -381,12 +381,27 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
381 if ((nextPerms & (uint)PermissionMask.Modify) == 0) 381 if ((nextPerms & (uint)PermissionMask.Modify) == 0)
382 perms &= ~(uint)PermissionMask.Modify; 382 perms &= ~(uint)PermissionMask.Modify;
383 383
384 // Make sure all bits but the ones we want are clear
385 // on take.
386 // This will be applied to the current perms, so
387 // it will do what we want.
388 objectGroup.RootPart.NextOwnerMask &=
389 ((uint)PermissionMask.Copy |
390 (uint)PermissionMask.Transfer |
391 (uint)PermissionMask.Modify);
392 objectGroup.RootPart.NextOwnerMask |=
393 (uint)PermissionMask.Move;
394
384 item.BasePermissions = perms & objectGroup.RootPart.NextOwnerMask; 395 item.BasePermissions = perms & objectGroup.RootPart.NextOwnerMask;
385 item.CurrentPermissions = item.BasePermissions; 396 item.CurrentPermissions = item.BasePermissions;
386 item.NextPermissions = objectGroup.RootPart.NextOwnerMask; 397 item.NextPermissions = objectGroup.RootPart.NextOwnerMask;
387 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask & objectGroup.RootPart.NextOwnerMask; 398 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask & objectGroup.RootPart.NextOwnerMask;
388 item.GroupPermissions = objectGroup.RootPart.GroupMask & objectGroup.RootPart.NextOwnerMask; 399 item.GroupPermissions = objectGroup.RootPart.GroupMask & objectGroup.RootPart.NextOwnerMask;
389 item.CurrentPermissions |= 8; // Slam! 400
401 // Magic number badness. Maybe this deserves an enum.
402 // bit 4 (16) is the "Slam" bit, it means treat as passed
403 // and apply next owner perms on rez
404 item.CurrentPermissions |= 16; // Slam!
390 } 405 }
391 else 406 else
392 { 407 {
@@ -396,7 +411,12 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
396 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask; 411 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask;
397 item.GroupPermissions = objectGroup.RootPart.GroupMask; 412 item.GroupPermissions = objectGroup.RootPart.GroupMask;
398 413
399 item.CurrentPermissions |= 8; // Slam! 414 item.CurrentPermissions &=
415 ((uint)PermissionMask.Copy |
416 (uint)PermissionMask.Transfer |
417 (uint)PermissionMask.Modify |
418 (uint)PermissionMask.Move |
419 7); // Preserve folded permissions
400 } 420 }
401 421
402 // TODO: add the new fields (Flags, Sale info, etc) 422 // TODO: add the new fields (Flags, Sale info, etc)
@@ -499,6 +519,12 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
499 519
500 group.RootPart.FromFolderID = item.Folder; 520 group.RootPart.FromFolderID = item.Folder;
501 521
522 // If it's rezzed in world, select it. Much easier to
523 // find small items.
524 //
525 if (!attachment)
526 group.RootPart.CreateSelected = true;
527
502 if (!m_Scene.Permissions.CanRezObject( 528 if (!m_Scene.Permissions.CanRezObject(
503 group.Children.Count, remoteClient.AgentId, pos) 529 group.Children.Count, remoteClient.AgentId, pos)
504 && !attachment) 530 && !attachment)
@@ -571,7 +597,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
571 List<SceneObjectPart> partList = new List<SceneObjectPart>(group.Children.Values); 597 List<SceneObjectPart> partList = new List<SceneObjectPart>(group.Children.Values);
572 598
573 group.SetGroup(remoteClient.ActiveGroupId, remoteClient); 599 group.SetGroup(remoteClient.ActiveGroupId, remoteClient);
574 if (rootPart.OwnerID != item.Owner) 600 if ((rootPart.OwnerID != item.Owner) || (item.CurrentPermissions & 16) != 0)
575 { 601 {
576 //Need to kill the for sale here 602 //Need to kill the for sale here
577 rootPart.ObjectSaleType = 0; 603 rootPart.ObjectSaleType = 0;
@@ -579,14 +605,11 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
579 605
580 if (m_Scene.Permissions.PropagatePermissions()) 606 if (m_Scene.Permissions.PropagatePermissions())
581 { 607 {
582 if ((item.CurrentPermissions & 8) != 0) 608 foreach (SceneObjectPart part in partList)
583 { 609 {
584 foreach (SceneObjectPart part in partList) 610 part.EveryoneMask = item.EveryOnePermissions;
585 { 611 part.NextOwnerMask = item.NextPermissions;
586 part.EveryoneMask = item.EveryOnePermissions; 612 part.GroupMask = 0; // DO NOT propagate here
587 part.NextOwnerMask = item.NextPermissions;
588 part.GroupMask = 0; // DO NOT propagate here
589 }
590 } 613 }
591 614
592 group.ApplyNextOwnerPermissions(); 615 group.ApplyNextOwnerPermissions();
@@ -595,19 +618,15 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
595 618
596 foreach (SceneObjectPart part in partList) 619 foreach (SceneObjectPart part in partList)
597 { 620 {
598 if (part.OwnerID != item.Owner) 621 if ((part.OwnerID != item.Owner) || (item.CurrentPermissions & 16) != 0)
599 { 622 {
600 part.LastOwnerID = part.OwnerID; 623 part.LastOwnerID = part.OwnerID;
601 part.OwnerID = item.Owner; 624 part.OwnerID = item.Owner;
602 part.Inventory.ChangeInventoryOwner(item.Owner); 625 part.Inventory.ChangeInventoryOwner(item.Owner);
603 }
604 else if (((item.CurrentPermissions & 8) != 0) && (!attachment)) // Slam!
605 {
606 part.EveryoneMask = item.EveryOnePermissions;
607 part.NextOwnerMask = item.NextPermissions;
608
609 part.GroupMask = 0; // DO NOT propagate here 626 part.GroupMask = 0; // DO NOT propagate here
610 } 627 }
628 part.EveryoneMask = item.EveryOnePermissions;
629 part.NextOwnerMask = item.NextPermissions;
611 } 630 }
612 631
613 rootPart.TrimPermissions(); 632 rootPart.TrimPermissions();
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
index 4ec5253..97161fc 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
@@ -253,7 +253,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
253 253
254 public InventoryFolderBase GetRootFolder(UUID userID) 254 public InventoryFolderBase GetRootFolder(UUID userID)
255 { 255 {
256 m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetRootFolder for {0}", userID); 256 //m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetRootFolder for {0}", userID);
257 257
258 string invURL = GetInventoryServiceURL(userID); 258 string invURL = GetInventoryServiceURL(userID);
259 259
@@ -267,7 +267,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
267 267
268 public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) 268 public InventoryFolderBase GetFolderForType(UUID userID, AssetType type)
269 { 269 {
270 m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetFolderForType {0} type {1}", userID, type); 270 //m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetFolderForType {0} type {1}", userID, type);
271 271
272 string invURL = GetInventoryServiceURL(userID); 272 string invURL = GetInventoryServiceURL(userID);
273 273
@@ -281,7 +281,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
281 281
282 public InventoryCollection GetFolderContent(UUID userID, UUID folderID) 282 public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
283 { 283 {
284 m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolderContent " + folderID); 284 //m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolderContent " + folderID);
285 285
286 string invURL = GetInventoryServiceURL(userID); 286 string invURL = GetInventoryServiceURL(userID);
287 287
@@ -296,7 +296,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
296 296
297 public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID) 297 public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
298 { 298 {
299 m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolderItems " + folderID); 299 //m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolderItems " + folderID);
300 300
301 string invURL = GetInventoryServiceURL(userID); 301 string invURL = GetInventoryServiceURL(userID);
302 302
@@ -314,7 +314,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
314 if (folder == null) 314 if (folder == null)
315 return false; 315 return false;
316 316
317 m_log.Debug("[HG INVENTORY CONNECTOR]: AddFolder " + folder.ID); 317 //m_log.Debug("[HG INVENTORY CONNECTOR]: AddFolder " + folder.ID);
318 318
319 string invURL = GetInventoryServiceURL(folder.Owner); 319 string invURL = GetInventoryServiceURL(folder.Owner);
320 320
@@ -331,7 +331,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
331 if (folder == null) 331 if (folder == null)
332 return false; 332 return false;
333 333
334 m_log.Debug("[HG INVENTORY CONNECTOR]: UpdateFolder " + folder.ID); 334 //m_log.Debug("[HG INVENTORY CONNECTOR]: UpdateFolder " + folder.ID);
335 335
336 string invURL = GetInventoryServiceURL(folder.Owner); 336 string invURL = GetInventoryServiceURL(folder.Owner);
337 337
@@ -350,7 +350,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
350 if (folderIDs.Count == 0) 350 if (folderIDs.Count == 0)
351 return false; 351 return false;
352 352
353 m_log.Debug("[HG INVENTORY CONNECTOR]: DeleteFolders for " + ownerID); 353 //m_log.Debug("[HG INVENTORY CONNECTOR]: DeleteFolders for " + ownerID);
354 354
355 string invURL = GetInventoryServiceURL(ownerID); 355 string invURL = GetInventoryServiceURL(ownerID);
356 356
@@ -367,7 +367,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
367 if (folder == null) 367 if (folder == null)
368 return false; 368 return false;
369 369
370 m_log.Debug("[HG INVENTORY CONNECTOR]: MoveFolder for " + folder.Owner); 370 //m_log.Debug("[HG INVENTORY CONNECTOR]: MoveFolder for " + folder.Owner);
371 371
372 string invURL = GetInventoryServiceURL(folder.Owner); 372 string invURL = GetInventoryServiceURL(folder.Owner);
373 373
@@ -384,7 +384,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
384 if (folder == null) 384 if (folder == null)
385 return false; 385 return false;
386 386
387 m_log.Debug("[HG INVENTORY CONNECTOR]: PurgeFolder for " + folder.Owner); 387 //m_log.Debug("[HG INVENTORY CONNECTOR]: PurgeFolder for " + folder.Owner);
388 388
389 string invURL = GetInventoryServiceURL(folder.Owner); 389 string invURL = GetInventoryServiceURL(folder.Owner);
390 390
@@ -401,7 +401,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
401 if (item == null) 401 if (item == null)
402 return false; 402 return false;
403 403
404 m_log.Debug("[HG INVENTORY CONNECTOR]: AddItem " + item.ID); 404 //m_log.Debug("[HG INVENTORY CONNECTOR]: AddItem " + item.ID);
405 405
406 string invURL = GetInventoryServiceURL(item.Owner); 406 string invURL = GetInventoryServiceURL(item.Owner);
407 407
@@ -418,7 +418,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
418 if (item == null) 418 if (item == null)
419 return false; 419 return false;
420 420
421 m_log.Debug("[HG INVENTORY CONNECTOR]: UpdateItem " + item.ID); 421 //m_log.Debug("[HG INVENTORY CONNECTOR]: UpdateItem " + item.ID);
422 422
423 string invURL = GetInventoryServiceURL(item.Owner); 423 string invURL = GetInventoryServiceURL(item.Owner);
424 424
@@ -437,7 +437,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
437 if (items.Count == 0) 437 if (items.Count == 0)
438 return true; 438 return true;
439 439
440 m_log.Debug("[HG INVENTORY CONNECTOR]: MoveItems for " + ownerID); 440 //m_log.Debug("[HG INVENTORY CONNECTOR]: MoveItems for " + ownerID);
441 441
442 string invURL = GetInventoryServiceURL(ownerID); 442 string invURL = GetInventoryServiceURL(ownerID);
443 443
@@ -451,15 +451,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
451 451
452 public bool DeleteItems(UUID ownerID, List<UUID> itemIDs) 452 public bool DeleteItems(UUID ownerID, List<UUID> itemIDs)
453 { 453 {
454 m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Delete {0} items for user {1}", itemIDs.Count, ownerID); 454 //m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Delete {0} items for user {1}", itemIDs.Count, ownerID);
455 455
456 if (itemIDs == null) 456 if (itemIDs == null)
457 return false; 457 return false;
458 if (itemIDs.Count == 0) 458 if (itemIDs.Count == 0)
459 return true; 459 return true;
460 460
461 m_log.Debug("[HG INVENTORY CONNECTOR]: DeleteItems for " + ownerID);
462
463 string invURL = GetInventoryServiceURL(ownerID); 461 string invURL = GetInventoryServiceURL(ownerID);
464 462
465 if (invURL == null) // not there, forward to local inventory connector to resolve 463 if (invURL == null) // not there, forward to local inventory connector to resolve
@@ -474,7 +472,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
474 { 472 {
475 if (item == null) 473 if (item == null)
476 return null; 474 return null;
477 m_log.Debug("[HG INVENTORY CONNECTOR]: GetItem " + item.ID); 475 //m_log.Debug("[HG INVENTORY CONNECTOR]: GetItem " + item.ID);
478 476
479 string invURL = GetInventoryServiceURL(item.Owner); 477 string invURL = GetInventoryServiceURL(item.Owner);
480 478
@@ -491,7 +489,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
491 if (folder == null) 489 if (folder == null)
492 return null; 490 return null;
493 491
494 m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolder " + folder.ID); 492 //m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolder " + folder.ID);
495 493
496 string invURL = GetInventoryServiceURL(folder.Owner); 494 string invURL = GetInventoryServiceURL(folder.Owner);
497 495
@@ -515,7 +513,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
515 513
516 public int GetAssetPermissions(UUID userID, UUID assetID) 514 public int GetAssetPermissions(UUID userID, UUID assetID)
517 { 515 {
518 m_log.Debug("[HG INVENTORY CONNECTOR]: GetAssetPermissions " + assetID); 516 //m_log.Debug("[HG INVENTORY CONNECTOR]: GetAssetPermissions " + assetID);
519 517
520 string invURL = GetInventoryServiceURL(userID); 518 string invURL = GetInventoryServiceURL(userID);
521 519
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs
index 3945142..2a87da2 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs
@@ -146,7 +146,7 @@ namespace OpenSim.Region.CoreModules.World.Land
146 else 146 else
147 { 147 {
148 // Normal Calculations 148 // Normal Calculations
149 return (int)Math.Round(((float)LandData.Area / 65536.0f) * (float)m_scene.objectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus); 149 return (int)Math.Round(((float)LandData.Area / 65536.0f) * (float)m_scene.RegionInfo.ObjectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus);
150 } 150 }
151 } 151 }
152 public int GetSimulatorMaxPrimCount(ILandObject thisObject) 152 public int GetSimulatorMaxPrimCount(ILandObject thisObject)
@@ -158,7 +158,7 @@ namespace OpenSim.Region.CoreModules.World.Land
158 else 158 else
159 { 159 {
160 //Normal Calculations 160 //Normal Calculations
161 return m_scene.objectCapacity; 161 return m_scene.RegionInfo.ObjectCapacity;
162 } 162 }
163 } 163 }
164 #endregion 164 #endregion