aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorDiva Canto2014-06-01 10:06:26 -0700
committerDiva Canto2014-06-01 10:06:26 -0700
commit2ff9ea3f8038653135c284cc0c93d88690db9a22 (patch)
tree34448f055a3577311e147503536260337a8d4719 /OpenSim
parentFix a bug where estate not found would result in a dummy estate record with e... (diff)
downloadopensim-SC-2ff9ea3f8038653135c284cc0c93d88690db9a22.zip
opensim-SC-2ff9ea3f8038653135c284cc0c93d88690db9a22.tar.gz
opensim-SC-2ff9ea3f8038653135c284cc0c93d88690db9a22.tar.bz2
opensim-SC-2ff9ea3f8038653135c284cc0c93d88690db9a22.tar.xz
Fixed a few things pertaining to interfacing with the estate service. Specifically, StoreEstateSettings was not being used anywhere; instead EstatSetting.Save was being called, but that method is a trigger to the DB-layer code directly, which, besides being wrong, was making it impossible to replace the service with a remote connector.
Also added more packing/unpacking code.
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs3
-rw-r--r--OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs12
-rw-r--r--OpenSim/Framework/EstateBan.cs49
-rw-r--r--OpenSim/Framework/EstateSettings.cs101
-rw-r--r--OpenSim/Region/Application/OpenSim.cs2
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs12
-rw-r--r--OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs51
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs2
-rw-r--r--OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs2
9 files changed, 187 insertions, 47 deletions
diff --git a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs
index 1d63d26..3455411 100644
--- a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs
+++ b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs
@@ -39,6 +39,7 @@ using OpenSim.Region.CoreModules.Avatar.InstantMessage;
39using OpenSim.Region.CoreModules.Scripting.DynamicTexture; 39using OpenSim.Region.CoreModules.Scripting.DynamicTexture;
40using OpenSim.Region.CoreModules.Scripting.LoadImageURL; 40using OpenSim.Region.CoreModules.Scripting.LoadImageURL;
41using OpenSim.Region.CoreModules.Scripting.XMLRPC; 41using OpenSim.Region.CoreModules.Scripting.XMLRPC;
42using OpenSim.Services.Interfaces;
42 43
43namespace OpenSim.ApplicationPlugins.LoadRegions 44namespace OpenSim.ApplicationPlugins.LoadRegions
44{ 45{
@@ -130,7 +131,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
130 createdScenes.Add(scene); 131 createdScenes.Add(scene);
131 132
132 if (changed) 133 if (changed)
133 regionsToLoad[i].EstateSettings.Save(); 134 m_openSim.EstateDataService.StoreEstateSettings(regionsToLoad[i].EstateSettings);
134 } 135 }
135 136
136 foreach (IScene scene in createdScenes) 137 foreach (IScene scene in createdScenes)
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
index e011232..44da48a 100644
--- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
+++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
@@ -694,7 +694,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
694 region.EstateSettings.EstateName = (string) requestData["estate_name"]; 694 region.EstateSettings.EstateName = (string) requestData["estate_name"];
695 region.EstateSettings.EstateOwner = userID; 695 region.EstateSettings.EstateOwner = userID;
696 // Persistence does not seem to effect the need to save a new estate 696 // Persistence does not seem to effect the need to save a new estate
697 region.EstateSettings.Save(); 697 m_application.EstateDataService.StoreEstateSettings(region.EstateSettings);
698 698
699 if (!m_application.EstateDataService.LinkRegion(region.RegionID, (int) region.EstateSettings.EstateID)) 699 if (!m_application.EstateDataService.LinkRegion(region.RegionID, (int) region.EstateSettings.EstateID))
700 throw new Exception("Failed to join estate."); 700 throw new Exception("Failed to join estate.");
@@ -724,7 +724,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
724 // If an access specification was provided, use it. 724 // If an access specification was provided, use it.
725 // Otherwise accept the default. 725 // Otherwise accept the default.
726 newScene.RegionInfo.EstateSettings.PublicAccess = GetBoolean(requestData, "public", m_publicAccess); 726 newScene.RegionInfo.EstateSettings.PublicAccess = GetBoolean(requestData, "public", m_publicAccess);
727 newScene.RegionInfo.EstateSettings.Save(); 727 m_application.EstateDataService.StoreEstateSettings(newScene.RegionInfo.EstateSettings);
728 728
729 // enable voice on newly created region if 729 // enable voice on newly created region if
730 // requested by either the XmlRpc request or the 730 // requested by either the XmlRpc request or the
@@ -910,7 +910,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
910 scene.RegionInfo.EstateSettings.PublicAccess = 910 scene.RegionInfo.EstateSettings.PublicAccess =
911 GetBoolean(requestData,"public", scene.RegionInfo.EstateSettings.PublicAccess); 911 GetBoolean(requestData,"public", scene.RegionInfo.EstateSettings.PublicAccess);
912 if (scene.RegionInfo.Persistent) 912 if (scene.RegionInfo.Persistent)
913 scene.RegionInfo.EstateSettings.Save(); 913 m_application.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings);
914 914
915 if (requestData.ContainsKey("enable_voice")) 915 if (requestData.ContainsKey("enable_voice"))
916 { 916 {
@@ -1792,7 +1792,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1792 scene.RegionInfo.EstateSettings.EstateAccess = new UUID[]{}; 1792 scene.RegionInfo.EstateSettings.EstateAccess = new UUID[]{};
1793 1793
1794 if (scene.RegionInfo.Persistent) 1794 if (scene.RegionInfo.Persistent)
1795 scene.RegionInfo.EstateSettings.Save(); 1795 m_application.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings);
1796 1796
1797 m_log.Info("[RADMIN]: Access List Clear Request complete"); 1797 m_log.Info("[RADMIN]: Access List Clear Request complete");
1798 } 1798 }
@@ -1838,7 +1838,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1838 } 1838 }
1839 scene.RegionInfo.EstateSettings.EstateAccess = accessControlList.ToArray(); 1839 scene.RegionInfo.EstateSettings.EstateAccess = accessControlList.ToArray();
1840 if (scene.RegionInfo.Persistent) 1840 if (scene.RegionInfo.Persistent)
1841 scene.RegionInfo.EstateSettings.Save(); 1841 m_application.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings);
1842 } 1842 }
1843 1843
1844 responseData["added"] = addedUsers; 1844 responseData["added"] = addedUsers;
@@ -1887,7 +1887,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1887 } 1887 }
1888 scene.RegionInfo.EstateSettings.EstateAccess = accessControlList.ToArray(); 1888 scene.RegionInfo.EstateSettings.EstateAccess = accessControlList.ToArray();
1889 if (scene.RegionInfo.Persistent) 1889 if (scene.RegionInfo.Persistent)
1890 scene.RegionInfo.EstateSettings.Save(); 1890 m_application.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings);
1891 } 1891 }
1892 1892
1893 responseData["removed"] = removedUsers; 1893 responseData["removed"] = removedUsers;
diff --git a/OpenSim/Framework/EstateBan.cs b/OpenSim/Framework/EstateBan.cs
index de9ebf6..ebed794 100644
--- a/OpenSim/Framework/EstateBan.cs
+++ b/OpenSim/Framework/EstateBan.cs
@@ -25,6 +25,10 @@
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System;
29using System.Collections.Generic;
30using System.Reflection;
31
28using OpenMetaverse; 32using OpenMetaverse;
29 33
30namespace OpenSim.Framework 34namespace OpenSim.Framework
@@ -111,5 +115,50 @@ namespace OpenSim.Framework
111 } 115 }
112 } 116 }
113 117
118 public EstateBan() { }
119
120 public Dictionary<string, object> ToMap()
121 {
122 Dictionary<string, object> map = new Dictionary<string, object>();
123 PropertyInfo[] properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
124 foreach (PropertyInfo p in properties)
125 map[p.Name] = p.GetValue(this, null);
126
127 return map;
128 }
129
130 public EstateBan(Dictionary<string, object> map)
131 {
132 foreach (KeyValuePair<string, object> kvp in map)
133 {
134 PropertyInfo p = this.GetType().GetProperty(kvp.Key, BindingFlags.Public | BindingFlags.Instance);
135 if (p == null)
136 continue;
137 object value = p.GetValue(this, null);
138 if (value is String)
139 p.SetValue(this, map[p.Name], null);
140 else if (value is UInt32)
141 p.SetValue(this, UInt32.Parse((string)map[p.Name]), null);
142 else if (value is Boolean)
143 p.SetValue(this, Boolean.Parse((string)map[p.Name]), null);
144 else if (value is UUID)
145 p.SetValue(this, UUID.Parse((string)map[p.Name]), null);
146 }
147 }
148
149
150 /// <summary>
151 /// For debugging
152 /// </summary>
153 /// <returns></returns>
154 public override string ToString()
155 {
156 Dictionary<string, object> map = ToMap();
157 string result = string.Empty;
158 foreach (KeyValuePair<string, object> kvp in map)
159 result += string.Format("{0}: {1} {2}", kvp.Key, kvp.Value, Environment.NewLine);
160
161 return result;
162 }
114 } 163 }
115} 164}
diff --git a/OpenSim/Framework/EstateSettings.cs b/OpenSim/Framework/EstateSettings.cs
index dd3e195..328fca4 100644
--- a/OpenSim/Framework/EstateSettings.cs
+++ b/OpenSim/Framework/EstateSettings.cs
@@ -418,17 +418,106 @@ namespace OpenSim.Framework
418 Dictionary<string, object> map = new Dictionary<string, object>(); 418 Dictionary<string, object> map = new Dictionary<string, object>();
419 PropertyInfo[] properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); 419 PropertyInfo[] properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
420 foreach (PropertyInfo p in properties) 420 foreach (PropertyInfo p in properties)
421 map[p.Name] = p.GetValue(this, null); 421 {
422 422 // EstateBans is a complex type, let's treat it as special
423 if (p.Name == "EstateBans")
424 continue;
425
426 object value = p.GetValue(this, null);
427 if (value != null)
428 {
429 if (p.PropertyType.IsArray) // of UUIDs
430 {
431 if (((Array)value).Length > 0)
432 {
433 string[] args = new string[((Array)value).Length];
434 int index = 0;
435 foreach (object o in (Array)value)
436 args[index++] = o.ToString();
437 map[p.Name] = String.Join(",", args);
438 }
439 }
440 else // simple types
441 map[p.Name] = value;
442 }
443 }
444
445 // EstateBans are special
446 Dictionary<string, object> bans = new Dictionary<string, object>();
447 int i = 0;
448 foreach (EstateBan ban in EstateBans)
449 bans["ban" + i++] = ban.ToMap();
450 map["EstateBans"] = bans;
423 return map; 451 return map;
424 } 452 }
425 453
426 public EstateSettings(Dictionary<string, object> map) 454 /// <summary>
455 /// For debugging
456 /// </summary>
457 /// <returns></returns>
458 public override string ToString()
427 { 459 {
428 PropertyInfo[] properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); 460 Dictionary<string, object> map = ToMap();
429 foreach (PropertyInfo p in properties) 461 String result = String.Empty;
430 p.SetValue(this, map[p.Name], null); 462
463 foreach (KeyValuePair<string, object> kvp in map)
464 {
465 if (kvp.Key == "EstateBans")
466 {
467 result += "EstateBans:" + Environment.NewLine;
468 foreach (KeyValuePair<string, object> ban in (Dictionary<string, object>)kvp.Value)
469 result += ban.Value.ToString();
470 }
471 else
472 result += string.Format("{0}: {1} {2}", kvp.Key, kvp.Value.ToString(), Environment.NewLine);
473 }
431 474
475 return result;
476 }
477
478 public EstateSettings(Dictionary<string, object> map)
479 {
480 foreach (KeyValuePair<string, object> kvp in map)
481 {
482 PropertyInfo p = this.GetType().GetProperty(kvp.Key, BindingFlags.Public | BindingFlags.Instance);
483 if (p == null)
484 continue;
485
486 // EstateBans is a complex type, let's treat it as special
487 if (p.Name == "EstateBans")
488 continue;
489
490 if (p.PropertyType.IsArray)
491 {
492 string[] elements = ((string)map[p.Name]).Split(new char[] { ',' });
493 UUID[] uuids = new UUID[elements.Length];
494 int i = 0;
495 foreach (string e in elements)
496 uuids[i++] = new UUID(e);
497 p.SetValue(this, uuids, null);
498 }
499 else
500 {
501 object value = p.GetValue(this, null);
502 if (value is String)
503 p.SetValue(this, map[p.Name], null);
504 else if (value is UInt32)
505 p.SetValue(this, UInt32.Parse((string)map[p.Name]), null);
506 else if (value is Boolean)
507 p.SetValue(this, Boolean.Parse((string)map[p.Name]), null);
508 else if (value is UUID)
509 p.SetValue(this, UUID.Parse((string)map[p.Name]), null);
510 }
511 }
512
513 // EstateBans are special
514 var banData = ((Dictionary<string, object>)map["EstateBans"]).Values;
515 EstateBan[] bans = new EstateBan[banData.Count];
516 int b = 0;
517 foreach (Dictionary<string, object> ban in banData)
518 bans[b++] = new EstateBan(ban);
519 PropertyInfo bansProperty = this.GetType().GetProperty("EstateBans", BindingFlags.Public | BindingFlags.Instance);
520 bansProperty.SetValue(this, bans, null);
432 } 521 }
433 } 522 }
434} 523}
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index 59b4614..9e4671f 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -730,7 +730,7 @@ namespace OpenSim
730 CreateRegion(regInfo, true, out scene); 730 CreateRegion(regInfo, true, out scene);
731 731
732 if (changed) 732 if (changed)
733 regInfo.EstateSettings.Save(); 733 m_estateDataService.StoreEstateSettings(regInfo.EstateSettings);
734 } 734 }
735 735
736 /// <summary> 736 /// <summary>
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index feb3cf8..4c1914a 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -232,13 +232,9 @@ namespace OpenSim
232 module)); 232 module));
233 233
234 // Load the estate data service 234 // Load the estate data service
235 IConfig estateDataConfig = Config.Configs["EstateDataStore"]; 235 module = Util.GetConfigVarFromSections<string>(Config, "LocalServiceModule", new string[]{"EstateDataStore", "EstateService"}, String.Empty);
236 if (estateDataConfig == null)
237 throw new Exception("Configuration file is missing the [EstateDataStore] section. Have you copied OpenSim.ini.example to OpenSim.ini to reference config-include/ files?");
238
239 module = estateDataConfig.GetString("LocalServiceModule", String.Empty);
240 if (String.IsNullOrEmpty(module)) 236 if (String.IsNullOrEmpty(module))
241 throw new Exception("Configuration file is missing the LocalServiceModule parameter in the [EstateDataStore] section"); 237 throw new Exception("Configuration file is missing the LocalServiceModule parameter in the [EstateDataStore] or [EstateService] section");
242 238
243 m_estateDataService = ServerUtils.LoadPlugin<IEstateDataService>(module, new object[] { Config }); 239 m_estateDataService = ServerUtils.LoadPlugin<IEstateDataService>(module, new object[] { Config });
244 if (m_estateDataService == null) 240 if (m_estateDataService == null)
@@ -555,7 +551,7 @@ namespace OpenSim
555 else 551 else
556 { 552 {
557 regionInfo.EstateSettings.EstateOwner = account.PrincipalID; 553 regionInfo.EstateSettings.EstateOwner = account.PrincipalID;
558 regionInfo.EstateSettings.Save(); 554 m_estateDataService.StoreEstateSettings(regionInfo.EstateSettings);
559 } 555 }
560 } 556 }
561 557
@@ -950,7 +946,7 @@ namespace OpenSim
950 // back to the default. The reloading of estate settings by scene could be eliminated if it 946 // back to the default. The reloading of estate settings by scene could be eliminated if it
951 // knows that the passed in settings in RegionInfo are already valid. Also, it might be 947 // knows that the passed in settings in RegionInfo are already valid. Also, it might be
952 // possible to eliminate some additional later saves made by callers of this method. 948 // possible to eliminate some additional later saves made by callers of this method.
953 regInfo.EstateSettings.Save(); 949 EstateDataService.StoreEstateSettings(regInfo.EstateSettings);
954 950
955 return true; 951 return true;
956 } 952 }
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
index eecc478..9fac9ff 100644
--- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
@@ -244,7 +244,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
244 else 244 else
245 { 245 {
246 dbSettings.EstateOwner = account.PrincipalID; 246 dbSettings.EstateOwner = account.PrincipalID;
247 dbSettings.Save(); 247 Scene.EstateDataService.StoreEstateSettings(dbSettings);
248 response = String.Empty; 248 response = String.Empty;
249 249
250 // make sure there's a log entry to document the change 250 // make sure there's a log entry to document the change
@@ -292,7 +292,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
292 { 292 {
293 string oldName = dbSettings.EstateName; 293 string oldName = dbSettings.EstateName;
294 dbSettings.EstateName = newName; 294 dbSettings.EstateName = newName;
295 dbSettings.Save(); 295 Scene.EstateDataService.StoreEstateSettings(dbSettings);
296 response = String.Empty; 296 response = String.Empty;
297 297
298 // make sure there's a log entry to document the change 298 // make sure there's a log entry to document the change
@@ -367,10 +367,15 @@ namespace OpenSim.Region.CoreModules.World.Estate
367 else 367 else
368 { 368 {
369 EstateSettings settings = Scene.EstateDataService.CreateNewEstate(); 369 EstateSettings settings = Scene.EstateDataService.CreateNewEstate();
370 settings.EstateOwner = ownerID; 370 if (settings == null)
371 settings.EstateName = estateName; 371 response = String.Format("Unable to create estate \"{0}\" at this simulator", estateName);
372 settings.Save(); 372 else
373 response = String.Empty; 373 {
374 settings.EstateOwner = ownerID;
375 settings.EstateName = estateName;
376 Scene.EstateDataService.StoreEstateSettings(settings);
377 response = String.Empty;
378 }
374 } 379 }
375 } 380 }
376 return response; 381 return response;
@@ -636,13 +641,13 @@ namespace OpenSim.Region.CoreModules.World.Estate
636 { 641 {
637 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); 642 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
638 estateSettings.AddEstateUser(user); 643 estateSettings.AddEstateUser(user);
639 estateSettings.Save(); 644 Scene.EstateDataService.StoreEstateSettings(estateSettings);
640 } 645 }
641 } 646 }
642 } 647 }
643 648
644 Scene.RegionInfo.EstateSettings.AddEstateUser(user); 649 Scene.RegionInfo.EstateSettings.AddEstateUser(user);
645 Scene.RegionInfo.EstateSettings.Save(); 650 Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings);
646 651
647 TriggerEstateInfoChange(); 652 TriggerEstateInfoChange();
648 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); 653 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID);
@@ -669,13 +674,13 @@ namespace OpenSim.Region.CoreModules.World.Estate
669 { 674 {
670 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); 675 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
671 estateSettings.RemoveEstateUser(user); 676 estateSettings.RemoveEstateUser(user);
672 estateSettings.Save(); 677 Scene.EstateDataService.StoreEstateSettings(estateSettings);
673 } 678 }
674 } 679 }
675 } 680 }
676 681
677 Scene.RegionInfo.EstateSettings.RemoveEstateUser(user); 682 Scene.RegionInfo.EstateSettings.RemoveEstateUser(user);
678 Scene.RegionInfo.EstateSettings.Save(); 683 Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings);
679 684
680 TriggerEstateInfoChange(); 685 TriggerEstateInfoChange();
681 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); 686 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID);
@@ -701,13 +706,13 @@ namespace OpenSim.Region.CoreModules.World.Estate
701 { 706 {
702 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); 707 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
703 estateSettings.AddEstateGroup(user); 708 estateSettings.AddEstateGroup(user);
704 estateSettings.Save(); 709 Scene.EstateDataService.StoreEstateSettings(estateSettings);
705 } 710 }
706 } 711 }
707 } 712 }
708 713
709 Scene.RegionInfo.EstateSettings.AddEstateGroup(user); 714 Scene.RegionInfo.EstateSettings.AddEstateGroup(user);
710 Scene.RegionInfo.EstateSettings.Save(); 715 Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings);
711 716
712 TriggerEstateInfoChange(); 717 TriggerEstateInfoChange();
713 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); 718 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID);
@@ -733,13 +738,13 @@ namespace OpenSim.Region.CoreModules.World.Estate
733 { 738 {
734 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); 739 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
735 estateSettings.RemoveEstateGroup(user); 740 estateSettings.RemoveEstateGroup(user);
736 estateSettings.Save(); 741 Scene.EstateDataService.StoreEstateSettings(estateSettings);
737 } 742 }
738 } 743 }
739 } 744 }
740 745
741 Scene.RegionInfo.EstateSettings.RemoveEstateGroup(user); 746 Scene.RegionInfo.EstateSettings.RemoveEstateGroup(user);
742 Scene.RegionInfo.EstateSettings.Save(); 747 Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings);
743 748
744 TriggerEstateInfoChange(); 749 TriggerEstateInfoChange();
745 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); 750 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID);
@@ -788,7 +793,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
788 793
789 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); 794 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
790 estateSettings.AddBan(bitem); 795 estateSettings.AddBan(bitem);
791 estateSettings.Save(); 796 Scene.EstateDataService.StoreEstateSettings(estateSettings);
792 } 797 }
793 } 798 }
794 } 799 }
@@ -801,7 +806,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
801 item.BannedHostIPMask = "0.0.0.0"; 806 item.BannedHostIPMask = "0.0.0.0";
802 807
803 Scene.RegionInfo.EstateSettings.AddBan(item); 808 Scene.RegionInfo.EstateSettings.AddBan(item);
804 Scene.RegionInfo.EstateSettings.Save(); 809 Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings);
805 810
806 TriggerEstateInfoChange(); 811 TriggerEstateInfoChange();
807 812
@@ -864,13 +869,13 @@ namespace OpenSim.Region.CoreModules.World.Estate
864 { 869 {
865 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); 870 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
866 estateSettings.RemoveBan(user); 871 estateSettings.RemoveBan(user);
867 estateSettings.Save(); 872 Scene.EstateDataService.StoreEstateSettings(estateSettings);
868 } 873 }
869 } 874 }
870 } 875 }
871 876
872 Scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID); 877 Scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID);
873 Scene.RegionInfo.EstateSettings.Save(); 878 Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings);
874 879
875 TriggerEstateInfoChange(); 880 TriggerEstateInfoChange();
876 } 881 }
@@ -903,13 +908,13 @@ namespace OpenSim.Region.CoreModules.World.Estate
903 { 908 {
904 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); 909 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
905 estateSettings.AddEstateManager(user); 910 estateSettings.AddEstateManager(user);
906 estateSettings.Save(); 911 Scene.EstateDataService.StoreEstateSettings(estateSettings);
907 } 912 }
908 } 913 }
909 } 914 }
910 915
911 Scene.RegionInfo.EstateSettings.AddEstateManager(user); 916 Scene.RegionInfo.EstateSettings.AddEstateManager(user);
912 Scene.RegionInfo.EstateSettings.Save(); 917 Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings);
913 918
914 TriggerEstateInfoChange(); 919 TriggerEstateInfoChange();
915 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); 920 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID);
@@ -935,13 +940,13 @@ namespace OpenSim.Region.CoreModules.World.Estate
935 { 940 {
936 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); 941 estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
937 estateSettings.RemoveEstateManager(user); 942 estateSettings.RemoveEstateManager(user);
938 estateSettings.Save(); 943 Scene.EstateDataService.StoreEstateSettings(estateSettings);
939 } 944 }
940 } 945 }
941 } 946 }
942 947
943 Scene.RegionInfo.EstateSettings.RemoveEstateManager(user); 948 Scene.RegionInfo.EstateSettings.RemoveEstateManager(user);
944 Scene.RegionInfo.EstateSettings.Save(); 949 Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings);
945 950
946 TriggerEstateInfoChange(); 951 TriggerEstateInfoChange();
947 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); 952 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID);
@@ -1415,7 +1420,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
1415 else 1420 else
1416 Scene.RegionInfo.EstateSettings.DenyMinors = false; 1421 Scene.RegionInfo.EstateSettings.DenyMinors = false;
1417 1422
1418 Scene.RegionInfo.EstateSettings.Save(); 1423 Scene.EstateDataService.StoreEstateSettings(Scene.RegionInfo.EstateSettings);
1419 TriggerEstateInfoChange(); 1424 TriggerEstateInfoChange();
1420 1425
1421 Scene.TriggerEstateSunUpdate(); 1426 Scene.TriggerEstateSunUpdate();
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index de2c3f7..4a24980 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -1246,7 +1246,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1246 World.RegionInfo.EstateSettings.UseGlobalTime = !sunFixed; 1246 World.RegionInfo.EstateSettings.UseGlobalTime = !sunFixed;
1247 World.RegionInfo.EstateSettings.SunPosition = sunHour; 1247 World.RegionInfo.EstateSettings.SunPosition = sunHour;
1248 World.RegionInfo.EstateSettings.FixedSun = sunFixed; 1248 World.RegionInfo.EstateSettings.FixedSun = sunFixed;
1249 World.RegionInfo.EstateSettings.Save(); 1249 World.EstateDataService.StoreEstateSettings(World.RegionInfo.EstateSettings);
1250 1250
1251 World.EventManager.TriggerEstateToolsSunUpdate(World.RegionInfo.RegionHandle); 1251 World.EventManager.TriggerEstateToolsSunUpdate(World.RegionInfo.RegionHandle);
1252 } 1252 }
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
index 684a0db..8fc766d 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianProfiles.cs
@@ -425,7 +425,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
425 estate.EstateID, admin.Name); 425 estate.EstateID, admin.Name);
426 426
427 estate.EstateOwner = admin.PrincipalID; 427 estate.EstateOwner = admin.PrincipalID;
428 estate.Save(); 428 scene.EstateDataService.StoreEstateSettings(estate);
429 } 429 }
430 else 430 else
431 { 431 {