aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs4
-rw-r--r--OpenSim/Data/MSSQL/MSSQLSimulationData.cs9
-rw-r--r--OpenSim/Data/MSSQL/Resources/RegionStore.migrations8
-rw-r--r--OpenSim/Data/MySQL/MySQLSimulationData.cs7
-rw-r--r--OpenSim/Data/MySQL/Resources/RegionStore.migrations20
-rw-r--r--OpenSim/Data/SQLite/Resources/RegionStore.migrations7
-rw-r--r--OpenSim/Data/SQLite/SQLiteSimulationData.cs3
-rw-r--r--OpenSim/Framework/IClientAPI.cs2
-rw-r--r--OpenSim/Framework/LandData.cs2
-rw-r--r--OpenSim/Framework/RegionSettings.cs10
-rw-r--r--OpenSim/Framework/Serialization/External/ExternalRepresentationUtils.cs72
-rw-r--r--OpenSim/Framework/Serialization/External/LandDataSerializer.cs179
-rw-r--r--OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs40
-rw-r--r--OpenSim/Framework/Serialization/External/UserProfileSerializer.cs5
-rw-r--r--OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs37
-rw-r--r--OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs134
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs8
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs10
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs4
-rw-r--r--OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs23
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs15
-rw-r--r--OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs103
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs2
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs2
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs2
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs30
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs32
-rw-r--r--OpenSim/Services/AuthenticationService/PasswordAuthenticationService.cs2
-rw-r--r--OpenSim/Tests/Common/Mock/TestClient.cs2
-rw-r--r--bin/OpenSim.Framework.Serialization.Tests.dll.config33
-rw-r--r--prebuild.xml2
34 files changed, 561 insertions, 254 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
index 914e4d6..49a8e64 100644
--- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
+++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
@@ -1510,9 +1510,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1510 // options["version"] = (string)requestData["version"]; 1510 // options["version"] = (string)requestData["version"];
1511 //} 1511 //}
1512 1512
1513 if (requestData.Contains("profile")) 1513 if (requestData.Contains("home"))
1514 { 1514 {
1515 options["profile"] = (string)requestData["profile"]; 1515 options["home"] = (string)requestData["home"];
1516 } 1516 }
1517 1517
1518 if ((string)requestData["noassets"] == "true") 1518 if ((string)requestData["noassets"] == "true")
diff --git a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs b/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
index be60d4c..e58620a 100644
--- a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
@@ -1252,7 +1252,7 @@ VALUES
1252,[elevation_1_ne] = @elevation_1_ne ,[elevation_2_ne] = @elevation_2_ne ,[elevation_1_se] = @elevation_1_se ,[elevation_2_se] = @elevation_2_se 1252,[elevation_1_ne] = @elevation_1_ne ,[elevation_2_ne] = @elevation_2_ne ,[elevation_1_se] = @elevation_1_se ,[elevation_2_se] = @elevation_2_se
1253,[elevation_1_sw] = @elevation_1_sw ,[elevation_2_sw] = @elevation_2_sw ,[water_height] = @water_height ,[terrain_raise_limit] = @terrain_raise_limit 1253,[elevation_1_sw] = @elevation_1_sw ,[elevation_2_sw] = @elevation_2_sw ,[water_height] = @water_height ,[terrain_raise_limit] = @terrain_raise_limit
1254,[terrain_lower_limit] = @terrain_lower_limit ,[use_estate_sun] = @use_estate_sun ,[fixed_sun] = @fixed_sun ,[sun_position] = @sun_position 1254,[terrain_lower_limit] = @terrain_lower_limit ,[use_estate_sun] = @use_estate_sun ,[fixed_sun] = @fixed_sun ,[sun_position] = @sun_position
1255,[covenant] = @covenant , [sunvectorx] = @sunvectorx, [sunvectory] = @sunvectory, [sunvectorz] = @sunvectorz, [Sandbox] = @Sandbox, [loaded_creation_datetime] = @loaded_creation_datetime, [loaded_creation_id] = @loaded_creation_id 1255,[covenant] = @covenant ,[covenant_datetime] = @covenant_datetime, [sunvectorx] = @sunvectorx, [sunvectory] = @sunvectory, [sunvectorz] = @sunvectorz, [Sandbox] = @Sandbox, [loaded_creation_datetime] = @loaded_creation_datetime, [loaded_creation_id] = @loaded_creation_id
1256 WHERE [regionUUID] = @regionUUID"; 1256 WHERE [regionUUID] = @regionUUID";
1257 1257
1258 using (SqlConnection conn = new SqlConnection(m_connectionString)) 1258 using (SqlConnection conn = new SqlConnection(m_connectionString))
@@ -1307,14 +1307,14 @@ VALUES
1307 [block_show_in_search],[agent_limit],[object_bonus],[maturity],[disable_scripts],[disable_collisions],[disable_physics], 1307 [block_show_in_search],[agent_limit],[object_bonus],[maturity],[disable_scripts],[disable_collisions],[disable_physics],
1308 [terrain_texture_1],[terrain_texture_2],[terrain_texture_3],[terrain_texture_4],[elevation_1_nw],[elevation_2_nw],[elevation_1_ne], 1308 [terrain_texture_1],[terrain_texture_2],[terrain_texture_3],[terrain_texture_4],[elevation_1_nw],[elevation_2_nw],[elevation_1_ne],
1309 [elevation_2_ne],[elevation_1_se],[elevation_2_se],[elevation_1_sw],[elevation_2_sw],[water_height],[terrain_raise_limit], 1309 [elevation_2_ne],[elevation_1_se],[elevation_2_se],[elevation_1_sw],[elevation_2_sw],[water_height],[terrain_raise_limit],
1310 [terrain_lower_limit],[use_estate_sun],[fixed_sun],[sun_position],[covenant],[sunvectorx], [sunvectory], [sunvectorz],[Sandbox], [loaded_creation_datetime], [loaded_creation_id] 1310 [terrain_lower_limit],[use_estate_sun],[fixed_sun],[sun_position],[covenant],[covenant_datetime],[sunvectorx], [sunvectory], [sunvectorz],[Sandbox], [loaded_creation_datetime], [loaded_creation_id]
1311 ) 1311 )
1312 VALUES 1312 VALUES
1313 (@regionUUID,@block_terraform,@block_fly,@allow_damage,@restrict_pushing,@allow_land_resell,@allow_land_join_divide, 1313 (@regionUUID,@block_terraform,@block_fly,@allow_damage,@restrict_pushing,@allow_land_resell,@allow_land_join_divide,
1314 @block_show_in_search,@agent_limit,@object_bonus,@maturity,@disable_scripts,@disable_collisions,@disable_physics, 1314 @block_show_in_search,@agent_limit,@object_bonus,@maturity,@disable_scripts,@disable_collisions,@disable_physics,
1315 @terrain_texture_1,@terrain_texture_2,@terrain_texture_3,@terrain_texture_4,@elevation_1_nw,@elevation_2_nw,@elevation_1_ne, 1315 @terrain_texture_1,@terrain_texture_2,@terrain_texture_3,@terrain_texture_4,@elevation_1_nw,@elevation_2_nw,@elevation_1_ne,
1316 @elevation_2_ne,@elevation_1_se,@elevation_2_se,@elevation_1_sw,@elevation_2_sw,@water_height,@terrain_raise_limit, 1316 @elevation_2_ne,@elevation_1_se,@elevation_2_se,@elevation_1_sw,@elevation_2_sw,@water_height,@terrain_raise_limit,
1317 @terrain_lower_limit,@use_estate_sun,@fixed_sun,@sun_position,@covenant,@sunvectorx,@sunvectory, @sunvectorz, @Sandbox, @loaded_creation_datetime, @loaded_creation_id)"; 1317 @terrain_lower_limit,@use_estate_sun,@fixed_sun,@sun_position,@covenant, @covenant_datetime, @sunvectorx,@sunvectory, @sunvectorz, @Sandbox, @loaded_creation_datetime, @loaded_creation_id)";
1318 1318
1319 using (SqlConnection conn = new SqlConnection(m_connectionString)) 1319 using (SqlConnection conn = new SqlConnection(m_connectionString))
1320 using (SqlCommand cmd = new SqlCommand(sql, conn)) 1320 using (SqlCommand cmd = new SqlCommand(sql, conn))
@@ -1376,7 +1376,7 @@ VALUES
1376 Convert.ToSingle(row["sunvectorz"]) 1376 Convert.ToSingle(row["sunvectorz"])
1377 ); 1377 );
1378 newSettings.Covenant = new UUID((Guid)row["covenant"]); 1378 newSettings.Covenant = new UUID((Guid)row["covenant"]);
1379 1379 newSettings.CovenantChangedDateTime = Convert.ToInt32(row["covenant_datetime"]);
1380 newSettings.LoadedCreationDateTime = Convert.ToInt32(row["loaded_creation_datetime"]); 1380 newSettings.LoadedCreationDateTime = Convert.ToInt32(row["loaded_creation_datetime"]);
1381 1381
1382 if (row["loaded_creation_id"] is DBNull) 1382 if (row["loaded_creation_id"] is DBNull)
@@ -1789,6 +1789,7 @@ VALUES
1789 parameters.Add(_Database.CreateParameter("sunvectory", settings.SunVector.Y)); 1789 parameters.Add(_Database.CreateParameter("sunvectory", settings.SunVector.Y));
1790 parameters.Add(_Database.CreateParameter("sunvectorz", settings.SunVector.Z)); 1790 parameters.Add(_Database.CreateParameter("sunvectorz", settings.SunVector.Z));
1791 parameters.Add(_Database.CreateParameter("covenant", settings.Covenant)); 1791 parameters.Add(_Database.CreateParameter("covenant", settings.Covenant));
1792 parameters.Add(_Database.CreateParameter("covenant_datetime", settings.CovenantChangedDateTime));
1792 parameters.Add(_Database.CreateParameter("Loaded_Creation_DateTime", settings.LoadedCreationDateTime)); 1793 parameters.Add(_Database.CreateParameter("Loaded_Creation_DateTime", settings.LoadedCreationDateTime));
1793 parameters.Add(_Database.CreateParameter("Loaded_Creation_ID", settings.LoadedCreationID)); 1794 parameters.Add(_Database.CreateParameter("Loaded_Creation_ID", settings.LoadedCreationID));
1794 1795
diff --git a/OpenSim/Data/MSSQL/Resources/RegionStore.migrations b/OpenSim/Data/MSSQL/Resources/RegionStore.migrations
index 3995e6c..a98690a 100644
--- a/OpenSim/Data/MSSQL/Resources/RegionStore.migrations
+++ b/OpenSim/Data/MSSQL/Resources/RegionStore.migrations
@@ -1043,3 +1043,11 @@ FOR CreatorID
1043ALTER TABLE primitems ALTER COLUMN CreatorID uniqueidentifier NOT NULL 1043ALTER TABLE primitems ALTER COLUMN CreatorID uniqueidentifier NOT NULL
1044 1044
1045COMMIT 1045COMMIT
1046
1047:VERSION 29 #---------------------
1048
1049BEGIN TRANSACTION
1050
1051ALTER TABLE regionsettings ADD covenant_datetime int NOT NULL default 0
1052
1053COMMIT
diff --git a/OpenSim/Data/MySQL/MySQLSimulationData.cs b/OpenSim/Data/MySQL/MySQLSimulationData.cs
index 48ef447..04b91ef 100644
--- a/OpenSim/Data/MySQL/MySQLSimulationData.cs
+++ b/OpenSim/Data/MySQL/MySQLSimulationData.cs
@@ -1009,7 +1009,7 @@ namespace OpenSim.Data.MySQL
1009 "elevation_2_sw, water_height, " + 1009 "elevation_2_sw, water_height, " +
1010 "terrain_raise_limit, terrain_lower_limit, " + 1010 "terrain_raise_limit, terrain_lower_limit, " +
1011 "use_estate_sun, fixed_sun, sun_position, " + 1011 "use_estate_sun, fixed_sun, sun_position, " +
1012 "covenant, Sandbox, sunvectorx, sunvectory, " + 1012 "covenant, covenant_datetime, Sandbox, sunvectorx, sunvectory, " +
1013 "sunvectorz, loaded_creation_datetime, " + 1013 "sunvectorz, loaded_creation_datetime, " +
1014 "loaded_creation_id, map_tile_ID, block_search, casino, " + 1014 "loaded_creation_id, map_tile_ID, block_search, casino, " +
1015 "TelehubObject, parcel_tile_ID) " + 1015 "TelehubObject, parcel_tile_ID) " +
@@ -1025,7 +1025,7 @@ namespace OpenSim.Data.MySQL
1025 "?Elevation2SE, ?Elevation1SW, ?Elevation2SW, " + 1025 "?Elevation2SE, ?Elevation1SW, ?Elevation2SW, " +
1026 "?WaterHeight, ?TerrainRaiseLimit, " + 1026 "?WaterHeight, ?TerrainRaiseLimit, " +
1027 "?TerrainLowerLimit, ?UseEstateSun, ?FixedSun, " + 1027 "?TerrainLowerLimit, ?UseEstateSun, ?FixedSun, " +
1028 "?SunPosition, ?Covenant, ?Sandbox, " + 1028 "?SunPosition, ?Covenant, ?CovenantChangedDateTime, ?Sandbox, " +
1029 "?SunVectorX, ?SunVectorY, ?SunVectorZ, " + 1029 "?SunVectorX, ?SunVectorY, ?SunVectorZ, " +
1030 "?LoadedCreationDateTime, ?LoadedCreationID, " + 1030 "?LoadedCreationDateTime, ?LoadedCreationID, " +
1031 "?TerrainImageID, ?block_search, ?casino, " + 1031 "?TerrainImageID, ?block_search, ?casino, " +
@@ -1308,7 +1308,7 @@ namespace OpenSim.Data.MySQL
1308 newSettings.FixedSun = Convert.ToBoolean(row["fixed_sun"]); 1308 newSettings.FixedSun = Convert.ToBoolean(row["fixed_sun"]);
1309 newSettings.SunPosition = Convert.ToDouble(row["sun_position"]); 1309 newSettings.SunPosition = Convert.ToDouble(row["sun_position"]);
1310 newSettings.Covenant = DBGuid.FromDB(row["covenant"]); 1310 newSettings.Covenant = DBGuid.FromDB(row["covenant"]);
1311 1311 newSettings.CovenantChangedDateTime = Convert.ToInt32(row["covenant_datetime"]);
1312 newSettings.LoadedCreationDateTime = Convert.ToInt32(row["loaded_creation_datetime"]); 1312 newSettings.LoadedCreationDateTime = Convert.ToInt32(row["loaded_creation_datetime"]);
1313 1313
1314 if (row["loaded_creation_id"] is DBNull) 1314 if (row["loaded_creation_id"] is DBNull)
@@ -1653,6 +1653,7 @@ namespace OpenSim.Data.MySQL
1653 cmd.Parameters.AddWithValue("FixedSun", settings.FixedSun); 1653 cmd.Parameters.AddWithValue("FixedSun", settings.FixedSun);
1654 cmd.Parameters.AddWithValue("SunPosition", settings.SunPosition); 1654 cmd.Parameters.AddWithValue("SunPosition", settings.SunPosition);
1655 cmd.Parameters.AddWithValue("Covenant", settings.Covenant.ToString()); 1655 cmd.Parameters.AddWithValue("Covenant", settings.Covenant.ToString());
1656 cmd.Parameters.AddWithValue("CovenantChangedDateTime", settings.CovenantChangedDateTime);
1656 cmd.Parameters.AddWithValue("LoadedCreationDateTime", settings.LoadedCreationDateTime); 1657 cmd.Parameters.AddWithValue("LoadedCreationDateTime", settings.LoadedCreationDateTime);
1657 cmd.Parameters.AddWithValue("LoadedCreationID", settings.LoadedCreationID); 1658 cmd.Parameters.AddWithValue("LoadedCreationID", settings.LoadedCreationID);
1658 cmd.Parameters.AddWithValue("TerrainImageID", settings.TerrainImageID); 1659 cmd.Parameters.AddWithValue("TerrainImageID", settings.TerrainImageID);
diff --git a/OpenSim/Data/MySQL/Resources/RegionStore.migrations b/OpenSim/Data/MySQL/Resources/RegionStore.migrations
index dae704c..ef99ef8 100644
--- a/OpenSim/Data/MySQL/Resources/RegionStore.migrations
+++ b/OpenSim/Data/MySQL/Resources/RegionStore.migrations
@@ -863,3 +863,23 @@ BEGIN;
863ALTER TABLE `regionsettings` ADD COLUMN `parcel_tile_ID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000'; 863ALTER TABLE `regionsettings` ADD COLUMN `parcel_tile_ID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000';
864COMMIT; 864COMMIT;
865 865
866:VERSION 41 #---------------- Timed bans/access
867
868BEGIN;
869ALTER TABLE `landaccesslist` ADD COLUMN `Expires` INTEGER NOT NULL DEFAULT 0;
870COMMIT;
871
872:VERSION 42 #--------------------- Region Covenant changed time
873
874BEGIN;
875ALTER TABLE regionsettings ADD COLUMN covenant_datetime int unsigned NOT NULL DEFAULT '0';
876COMMIT;
877
878:VERSION 43 #---------------------
879
880BEGIN;
881
882ALTER TABLE `regionsettings` MODIFY COLUMN `TelehubObject` VARCHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000';
883
884COMMIT;
885
diff --git a/OpenSim/Data/SQLite/Resources/RegionStore.migrations b/OpenSim/Data/SQLite/Resources/RegionStore.migrations
index 5e2045b..31195af 100644
--- a/OpenSim/Data/SQLite/Resources/RegionStore.migrations
+++ b/OpenSim/Data/SQLite/Resources/RegionStore.migrations
@@ -466,4 +466,9 @@ ALTER TABLE `land` ADD COLUMN `MediaSize` VARCHAR(16) NOT NULL DEFAULT '0,0';
466ALTER TABLE `land` ADD COLUMN `MediaLoop` BOOLEAN NOT NULL DEFAULT FALSE; 466ALTER TABLE `land` ADD COLUMN `MediaLoop` BOOLEAN NOT NULL DEFAULT FALSE;
467ALTER TABLE `land` ADD COLUMN `ObscureMusic` BOOLEAN NOT NULL DEFAULT FALSE; 467ALTER TABLE `land` ADD COLUMN `ObscureMusic` BOOLEAN NOT NULL DEFAULT FALSE;
468ALTER TABLE `land` ADD COLUMN `ObscureMedia` BOOLEAN NOT NULL DEFAULT FALSE; 468ALTER TABLE `land` ADD COLUMN `ObscureMedia` BOOLEAN NOT NULL DEFAULT FALSE;
469COMMIT; \ No newline at end of file 469COMMIT;
470
471:VERSION 22
472BEGIN;
473ALTER TABLE regionsettings ADD COLUMN covenant_datetime INTEGER NOT NULL default 0;
474COMMIT;
diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
index 2d06f82..a313c4f 100644
--- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs
+++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
@@ -1185,6 +1185,7 @@ namespace OpenSim.Data.SQLite
1185 createCol(regionsettings, "fixed_sun", typeof (Int32)); 1185 createCol(regionsettings, "fixed_sun", typeof (Int32));
1186 createCol(regionsettings, "sun_position", typeof (Double)); 1186 createCol(regionsettings, "sun_position", typeof (Double));
1187 createCol(regionsettings, "covenant", typeof(String)); 1187 createCol(regionsettings, "covenant", typeof(String));
1188 createCol(regionsettings, "covenant_datetime", typeof(Int32));
1188 createCol(regionsettings, "map_tile_ID", typeof(String)); 1189 createCol(regionsettings, "map_tile_ID", typeof(String));
1189 regionsettings.PrimaryKey = new DataColumn[] { regionsettings.Columns["regionUUID"] }; 1190 regionsettings.PrimaryKey = new DataColumn[] { regionsettings.Columns["regionUUID"] };
1190 return regionsettings; 1191 return regionsettings;
@@ -1509,6 +1510,7 @@ namespace OpenSim.Data.SQLite
1509 newSettings.FixedSun = Convert.ToBoolean(row["fixed_sun"]); 1510 newSettings.FixedSun = Convert.ToBoolean(row["fixed_sun"]);
1510 newSettings.SunPosition = Convert.ToDouble(row["sun_position"]); 1511 newSettings.SunPosition = Convert.ToDouble(row["sun_position"]);
1511 newSettings.Covenant = new UUID((String) row["covenant"]); 1512 newSettings.Covenant = new UUID((String) row["covenant"]);
1513 newSettings.CovenantChangedDateTime = Convert.ToInt32(row["covenant_datetime"]);
1512 newSettings.TerrainImageID = new UUID((String)row["map_tile_ID"]); 1514 newSettings.TerrainImageID = new UUID((String)row["map_tile_ID"]);
1513 1515
1514 return newSettings; 1516 return newSettings;
@@ -1833,6 +1835,7 @@ namespace OpenSim.Data.SQLite
1833 row["fixed_sun"] = settings.FixedSun; 1835 row["fixed_sun"] = settings.FixedSun;
1834 row["sun_position"] = settings.SunPosition; 1836 row["sun_position"] = settings.SunPosition;
1835 row["covenant"] = settings.Covenant.ToString(); 1837 row["covenant"] = settings.Covenant.ToString();
1838 row["covenant_datetime"] = settings.CovenantChangedDateTime;
1836 row["map_tile_ID"] = settings.TerrainImageID.ToString(); 1839 row["map_tile_ID"] = settings.TerrainImageID.ToString();
1837 } 1840 }
1838 1841
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index c4c61ff..5e156f1 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -1243,7 +1243,7 @@ namespace OpenSim.Framework
1243 void SendEstateCovenantInformation(UUID covenant); 1243 void SendEstateCovenantInformation(UUID covenant);
1244 1244
1245 void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, 1245 void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags,
1246 uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner); 1246 uint sunPosition, UUID covenant, uint covenantChanged, string abuseEmail, UUID estateOwner);
1247 1247
1248 /// <summary> 1248 /// <summary>
1249 /// Send land properties to the client. 1249 /// Send land properties to the client.
diff --git a/OpenSim/Framework/LandData.cs b/OpenSim/Framework/LandData.cs
index 27fadfa..9a9a6bf 100644
--- a/OpenSim/Framework/LandData.cs
+++ b/OpenSim/Framework/LandData.cs
@@ -34,7 +34,7 @@ using OpenMetaverse;
34 34
35namespace OpenSim.Framework 35namespace OpenSim.Framework
36{ 36{
37 public struct LandAccessEntry 37 public class LandAccessEntry
38 { 38 {
39 public UUID AgentID; 39 public UUID AgentID;
40 public int Expires; 40 public int Expires;
diff --git a/OpenSim/Framework/RegionSettings.cs b/OpenSim/Framework/RegionSettings.cs
index e668ad5..c142bd9 100644
--- a/OpenSim/Framework/RegionSettings.cs
+++ b/OpenSim/Framework/RegionSettings.cs
@@ -413,6 +413,14 @@ namespace OpenSim.Framework
413 set { m_Covenant = value; } 413 set { m_Covenant = value; }
414 } 414 }
415 415
416 private int m_CovenantChanged = 0;
417
418 public int CovenantChangedDateTime
419 {
420 get { return m_CovenantChanged; }
421 set { m_CovenantChanged = value; }
422 }
423
416 private int m_LoadedCreationDateTime; 424 private int m_LoadedCreationDateTime;
417 public int LoadedCreationDateTime 425 public int LoadedCreationDateTime
418 { 426 {
@@ -514,4 +522,4 @@ namespace OpenSim.Framework
514 l_SpawnPoints.Clear(); 522 l_SpawnPoints.Clear();
515 } 523 }
516 } 524 }
517} 525} \ No newline at end of file
diff --git a/OpenSim/Framework/Serialization/External/ExternalRepresentationUtils.cs b/OpenSim/Framework/Serialization/External/ExternalRepresentationUtils.cs
index 7447ac2..a392af6 100644
--- a/OpenSim/Framework/Serialization/External/ExternalRepresentationUtils.cs
+++ b/OpenSim/Framework/Serialization/External/ExternalRepresentationUtils.cs
@@ -24,11 +24,13 @@
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
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
27using System; 28using System;
28using System.Collections.Generic; 29using System.Collections.Generic;
29using System.IO; 30using System.IO;
31using System.Reflection;
30using System.Xml; 32using System.Xml;
31 33using log4net;
32using OpenMetaverse; 34using OpenMetaverse;
33using OpenSim.Services.Interfaces; 35using OpenSim.Services.Interfaces;
34 36
@@ -39,6 +41,74 @@ namespace OpenSim.Framework.Serialization.External
39 /// </summary> 41 /// </summary>
40 public class ExternalRepresentationUtils 42 public class ExternalRepresentationUtils
41 { 43 {
44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45
46 /// <summary>
47 /// Populate a node with data read from xml using a dictinoary of processors
48 /// </summary>
49 /// <param name="nodeToFill"></param>
50 /// <param name="processors">/param>
51 /// <param name="xtr"></param>
52 public static void ExecuteReadProcessors<NodeType>(
53 NodeType nodeToFill, Dictionary<string, Action<NodeType, XmlTextReader>> processors, XmlTextReader xtr)
54 {
55 ExecuteReadProcessors(
56 nodeToFill,
57 processors,
58 xtr,
59 (o, name, e)
60 => m_log.ErrorFormat(
61 "[ExternalRepresentationUtils]: Exception while parsing element {0}, continuing. Exception {1}{2}",
62 name, e.Message, e.StackTrace));
63 }
64
65 /// <summary>
66 /// Populate a node with data read from xml using a dictinoary of processors
67 /// </summary>
68 /// <param name="nodeToFill"></param>
69 /// <param name="processors"></param>
70 /// <param name="xtr"></param>
71 /// <param name="parseExceptionAction">
72 /// Action to take if there is a parsing problem. This will usually just be to log the exception
73 /// </param>
74 public static void ExecuteReadProcessors<NodeType>(
75 NodeType nodeToFill,
76 Dictionary<string, Action<NodeType, XmlTextReader>> processors,
77 XmlTextReader xtr,
78 Action<NodeType, string, Exception> parseExceptionAction)
79 {
80 string nodeName = string.Empty;
81 while (xtr.NodeType != XmlNodeType.EndElement)
82 {
83 nodeName = xtr.Name;
84
85// m_log.DebugFormat("[ExternalRepresentationUtils]: Processing: {0}", nodeName);
86
87 Action<NodeType, XmlTextReader> p = null;
88 if (processors.TryGetValue(xtr.Name, out p))
89 {
90// m_log.DebugFormat("[ExternalRepresentationUtils]: Found {0} processor, nodeName);
91
92 try
93 {
94 p(nodeToFill, xtr);
95 }
96 catch (Exception e)
97 {
98 parseExceptionAction(nodeToFill, nodeName, e);
99
100 if (xtr.NodeType == XmlNodeType.EndElement)
101 xtr.Read();
102 }
103 }
104 else
105 {
106 // m_log.DebugFormat("[LandDataSerializer]: caught unknown element {0}", nodeName);
107 xtr.ReadOuterXml(); // ignore
108 }
109 }
110 }
111
42 /// <summary> 112 /// <summary>
43 /// Takes a XML representation of a SceneObjectPart and returns another XML representation 113 /// Takes a XML representation of a SceneObjectPart and returns another XML representation
44 /// with creator data added to it. 114 /// with creator data added to it.
diff --git a/OpenSim/Framework/Serialization/External/LandDataSerializer.cs b/OpenSim/Framework/Serialization/External/LandDataSerializer.cs
index 3ae9a8e..a12877a 100644
--- a/OpenSim/Framework/Serialization/External/LandDataSerializer.cs
+++ b/OpenSim/Framework/Serialization/External/LandDataSerializer.cs
@@ -28,8 +28,10 @@
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.IO; 30using System.IO;
31using System.Reflection;
31using System.Text; 32using System.Text;
32using System.Xml; 33using System.Xml;
34using log4net;
33using OpenMetaverse; 35using OpenMetaverse;
34using OpenSim.Framework; 36using OpenSim.Framework;
35 37
@@ -40,8 +42,119 @@ namespace OpenSim.Framework.Serialization.External
40 /// </summary> 42 /// </summary>
41 public class LandDataSerializer 43 public class LandDataSerializer
42 { 44 {
45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
46
43 protected static UTF8Encoding m_utf8Encoding = new UTF8Encoding(); 47 protected static UTF8Encoding m_utf8Encoding = new UTF8Encoding();
44 48
49 private static Dictionary<string, Action<LandData, XmlTextReader>> m_ldProcessors
50 = new Dictionary<string, Action<LandData, XmlTextReader>>();
51
52 private static Dictionary<string, Action<LandAccessEntry, XmlTextReader>> m_laeProcessors
53 = new Dictionary<string, Action<LandAccessEntry, XmlTextReader>>();
54
55 static LandDataSerializer()
56 {
57 // LandData processors
58 m_ldProcessors.Add(
59 "Area", (ld, xtr) => ld.Area = Convert.ToInt32(xtr.ReadElementString("Area")));
60 m_ldProcessors.Add(
61 "AuctionID", (ld, xtr) => ld.AuctionID = Convert.ToUInt32(xtr.ReadElementString("AuctionID")));
62 m_ldProcessors.Add(
63 "AuthBuyerID", (ld, xtr) => ld.AuthBuyerID = UUID.Parse(xtr.ReadElementString("AuthBuyerID")));
64 m_ldProcessors.Add(
65 "Category", (ld, xtr) => ld.Category = (ParcelCategory)Convert.ToSByte(xtr.ReadElementString("Category")));
66 m_ldProcessors.Add(
67 "ClaimDate", (ld, xtr) => ld.ClaimDate = Convert.ToInt32(xtr.ReadElementString("ClaimDate")));
68 m_ldProcessors.Add(
69 "ClaimPrice", (ld, xtr) => ld.ClaimPrice = Convert.ToInt32(xtr.ReadElementString("ClaimPrice")));
70 m_ldProcessors.Add(
71 "GlobalID", (ld, xtr) => ld.GlobalID = UUID.Parse(xtr.ReadElementString("GlobalID")));
72 m_ldProcessors.Add(
73 "GroupID", (ld, xtr) => ld.GroupID = UUID.Parse(xtr.ReadElementString("GroupID")));
74 m_ldProcessors.Add(
75 "IsGroupOwned", (ld, xtr) => ld.IsGroupOwned = Convert.ToBoolean(xtr.ReadElementString("IsGroupOwned")));
76 m_ldProcessors.Add(
77 "Bitmap", (ld, xtr) => ld.Bitmap = Convert.FromBase64String(xtr.ReadElementString("Bitmap")));
78 m_ldProcessors.Add(
79 "Description", (ld, xtr) => ld.Description = xtr.ReadElementString("Description"));
80 m_ldProcessors.Add(
81 "Flags", (ld, xtr) => ld.Flags = Convert.ToUInt32(xtr.ReadElementString("Flags")));
82 m_ldProcessors.Add(
83 "LandingType", (ld, xtr) => ld.LandingType = Convert.ToByte(xtr.ReadElementString("LandingType")));
84 m_ldProcessors.Add(
85 "Name", (ld, xtr) => ld.Name = xtr.ReadElementString("Name"));
86 m_ldProcessors.Add(
87 "Status", (ld, xtr) => ld.Status = (ParcelStatus)Convert.ToSByte(xtr.ReadElementString("Status")));
88 m_ldProcessors.Add(
89 "LocalID", (ld, xtr) => ld.LocalID = Convert.ToInt32(xtr.ReadElementString("LocalID")));
90 m_ldProcessors.Add(
91 "MediaAutoScale", (ld, xtr) => ld.MediaAutoScale = Convert.ToByte(xtr.ReadElementString("MediaAutoScale")));
92 m_ldProcessors.Add(
93 "MediaID", (ld, xtr) => ld.MediaID = UUID.Parse(xtr.ReadElementString("MediaID")));
94 m_ldProcessors.Add(
95 "MediaURL", (ld, xtr) => ld.MediaURL = xtr.ReadElementString("MediaURL"));
96 m_ldProcessors.Add(
97 "MusicURL", (ld, xtr) => ld.MusicURL = xtr.ReadElementString("MusicURL"));
98
99 m_ldProcessors.Add(
100 "ParcelAccessList", ProcessParcelAccessList);
101
102 m_ldProcessors.Add(
103 "PassHours", (ld, xtr) => ld.PassHours = Convert.ToSingle(xtr.ReadElementString("PassHours")));
104 m_ldProcessors.Add(
105 "PassPrice", (ld, xtr) => ld.PassPrice = Convert.ToInt32(xtr.ReadElementString("PassPrice")));
106 m_ldProcessors.Add(
107 "SalePrice", (ld, xtr) => ld.SalePrice = Convert.ToInt32(xtr.ReadElementString("SalePrice")));
108 m_ldProcessors.Add(
109 "SnapshotID", (ld, xtr) => ld.SnapshotID = UUID.Parse(xtr.ReadElementString("SnapshotID")));
110 m_ldProcessors.Add(
111 "UserLocation", (ld, xtr) => ld.UserLocation = Vector3.Parse(xtr.ReadElementString("UserLocation")));
112 m_ldProcessors.Add(
113 "UserLookAt", (ld, xtr) => ld.UserLookAt = Vector3.Parse(xtr.ReadElementString("UserLookAt")));
114
115 // No longer used here //
116 // m_ldProcessors.Add("Dwell", (landData, xtr) => return);
117
118 m_ldProcessors.Add(
119 "OtherCleanTime", (ld, xtr) => ld.OtherCleanTime = Convert.ToInt32(xtr.ReadElementString("OtherCleanTime")));
120
121 // LandAccessEntryProcessors
122 m_laeProcessors.Add(
123 "AgentID", (lae, xtr) => lae.AgentID = UUID.Parse(xtr.ReadElementString("AgentID")));
124 m_laeProcessors.Add(
125 "Time", (lae, xtr) =>
126 {
127 // We really don't care about temp vs perm here and this
128 // would break on old oars. Assume all bans are perm
129 xtr.ReadElementString("Time");
130 lae.Expires = 0; // Convert.ToUint( xtr.ReadElementString("Time"));
131 }
132 );
133 m_laeProcessors.Add(
134 "AccessList", (lae, xtr) => lae.Flags = (AccessList)Convert.ToUInt32(xtr.ReadElementString("AccessList")));
135 }
136
137 public static void ProcessParcelAccessList(LandData ld, XmlTextReader xtr)
138 {
139 if (!xtr.IsEmptyElement)
140 {
141 while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
142 {
143 LandAccessEntry lae = new LandAccessEntry();
144
145 xtr.ReadStartElement("ParcelAccessEntry");
146
147 ExternalRepresentationUtils.ExecuteReadProcessors<LandAccessEntry>(lae, m_laeProcessors, xtr);
148
149 xtr.ReadEndElement();
150
151 ld.ParcelAccessList.Add(lae);
152 }
153 }
154
155 xtr.Read();
156 }
157
45 /// <summary> 158 /// <summary>
46 /// Reify/deserialize landData 159 /// Reify/deserialize landData
47 /// </summary> 160 /// </summary>
@@ -63,72 +176,14 @@ namespace OpenSim.Framework.Serialization.External
63 { 176 {
64 LandData landData = new LandData(); 177 LandData landData = new LandData();
65 178
66 StringReader sr = new StringReader(serializedLandData); 179 using (XmlTextReader reader = new XmlTextReader(new StringReader(serializedLandData)))
67 XmlTextReader xtr = new XmlTextReader(sr);
68
69 xtr.ReadStartElement("LandData");
70
71 landData.Area = Convert.ToInt32( xtr.ReadElementString("Area"));
72 landData.AuctionID = Convert.ToUInt32( xtr.ReadElementString("AuctionID"));
73 landData.AuthBuyerID = UUID.Parse( xtr.ReadElementString("AuthBuyerID"));
74 landData.Category = (ParcelCategory)Convert.ToSByte( xtr.ReadElementString("Category"));
75 landData.ClaimDate = Convert.ToInt32( xtr.ReadElementString("ClaimDate"));
76 landData.ClaimPrice = Convert.ToInt32( xtr.ReadElementString("ClaimPrice"));
77 landData.GlobalID = UUID.Parse( xtr.ReadElementString("GlobalID"));
78 landData.GroupID = UUID.Parse( xtr.ReadElementString("GroupID"));
79 landData.IsGroupOwned = Convert.ToBoolean( xtr.ReadElementString("IsGroupOwned"));
80 landData.Bitmap = Convert.FromBase64String( xtr.ReadElementString("Bitmap"));
81 landData.Description = xtr.ReadElementString("Description");
82 landData.Flags = Convert.ToUInt32( xtr.ReadElementString("Flags"));
83 landData.LandingType = Convert.ToByte( xtr.ReadElementString("LandingType"));
84 landData.Name = xtr.ReadElementString("Name");
85 landData.Status = (ParcelStatus)Convert.ToSByte( xtr.ReadElementString("Status"));
86 landData.LocalID = Convert.ToInt32( xtr.ReadElementString("LocalID"));
87 landData.MediaAutoScale = Convert.ToByte( xtr.ReadElementString("MediaAutoScale"));
88 landData.MediaID = UUID.Parse( xtr.ReadElementString("MediaID"));
89 landData.MediaURL = xtr.ReadElementString("MediaURL");
90 landData.MusicURL = xtr.ReadElementString("MusicURL");
91 landData.OwnerID = UUID.Parse( xtr.ReadElementString("OwnerID"));
92
93 landData.ParcelAccessList = new List<LandAccessEntry>();
94 xtr.Read();
95 if (xtr.Name != "ParcelAccessList")
96 throw new XmlException(String.Format("Expected \"ParcelAccessList\" element but got \"{0}\"", xtr.Name));
97
98 if (!xtr.IsEmptyElement)
99 { 180 {
100 while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement) 181 reader.ReadStartElement("LandData");
101 {
102 LandAccessEntry pae = new LandAccessEntry();
103 182
104 xtr.ReadStartElement("ParcelAccessEntry"); 183 ExternalRepresentationUtils.ExecuteReadProcessors<LandData>(landData, m_ldProcessors, reader);
105 pae.AgentID = UUID.Parse( xtr.ReadElementString("AgentID"));
106 // We really don't care about temp vs perm here and this
107 // would break on old oars. Assume all bans are perm
108 xtr.ReadElementString("Time");
109 pae.Expires = 0; // Convert.ToUint( xtr.ReadElementString("Time"));
110 pae.Flags = (AccessList)Convert.ToUInt32( xtr.ReadElementString("AccessList"));
111 xtr.ReadEndElement();
112 184
113 landData.ParcelAccessList.Add(pae); 185 reader.ReadEndElement();
114 }
115 } 186 }
116 xtr.Read();
117
118 landData.PassHours = Convert.ToSingle( xtr.ReadElementString("PassHours"));
119 landData.PassPrice = Convert.ToInt32( xtr.ReadElementString("PassPrice"));
120 landData.SalePrice = Convert.ToInt32( xtr.ReadElementString("SalePrice"));
121 landData.SnapshotID = UUID.Parse( xtr.ReadElementString("SnapshotID"));
122 landData.UserLocation = Vector3.Parse( xtr.ReadElementString("UserLocation"));
123 landData.UserLookAt = Vector3.Parse( xtr.ReadElementString("UserLookAt"));
124 // No longer used here
125 xtr.ReadElementString("Dwell");
126 landData.OtherCleanTime = Convert.ToInt32( xtr.ReadElementString("OtherCleanTime"));
127
128 xtr.ReadEndElement();
129
130 xtr.Close();
131 sr.Close();
132 187
133 return landData; 188 return landData;
134 } 189 }
diff --git a/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs b/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs
index f138437..57da7ca 100644
--- a/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs
+++ b/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs
@@ -41,14 +41,13 @@ namespace OpenSim.Framework.Serialization.External
41{ 41{
42 /// <summary> 42 /// <summary>
43 /// Serialize and deserialize user inventory items as an external format. 43 /// Serialize and deserialize user inventory items as an external format.
44 /// </summary> 44 /// </summary>
45 /// XXX: Please do not use yet.
46 public class UserInventoryItemSerializer 45 public class UserInventoryItemSerializer
47 { 46 {
48 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
49 48
50 private delegate void InventoryItemXmlProcessor(InventoryItemBase item, XmlTextReader reader); 49 private static Dictionary<string, Action<InventoryItemBase, XmlTextReader>> m_InventoryItemXmlProcessors
51 private static Dictionary<string, InventoryItemXmlProcessor> m_InventoryItemXmlProcessors = new Dictionary<string, InventoryItemXmlProcessor>(); 50 = new Dictionary<string, Action<InventoryItemBase, XmlTextReader>>();
52 51
53 #region InventoryItemBase Processor initialization 52 #region InventoryItemBase Processor initialization
54 static UserInventoryItemSerializer() 53 static UserInventoryItemSerializer()
@@ -205,39 +204,14 @@ namespace OpenSim.Framework.Serialization.External
205 { 204 {
206 reader.ReadStartElement("InventoryItem"); 205 reader.ReadStartElement("InventoryItem");
207 206
208 string nodeName = string.Empty; 207 ExternalRepresentationUtils.ExecuteReadProcessors<InventoryItemBase>(
209 while (reader.NodeType != XmlNodeType.EndElement) 208 item, m_InventoryItemXmlProcessors, reader);
210 {
211 nodeName = reader.Name;
212 InventoryItemXmlProcessor p = null;
213 if (m_InventoryItemXmlProcessors.TryGetValue(reader.Name, out p))
214 {
215 //m_log.DebugFormat("[XXX] Processing: {0}", reader.Name);
216 try
217 {
218 p(item, reader);
219 }
220 catch (Exception e)
221 {
222 m_log.DebugFormat("[InventoryItemSerializer]: exception while parsing {0}: {1}", nodeName, e);
223 if (reader.NodeType == XmlNodeType.EndElement)
224 reader.Read();
225 }
226 }
227 else
228 {
229 // m_log.DebugFormat("[InventoryItemSerializer]: caught unknown element {0}", nodeName);
230 reader.ReadOuterXml(); // ignore
231 }
232
233 }
234 209
235 reader.ReadEndElement(); // InventoryItem 210 reader.ReadEndElement(); // InventoryItem
236 } 211 }
237 212
238 //m_log.DebugFormat("[XXX]: parsed InventoryItemBase {0} - {1}", obj.Name, obj.UUID); 213 //m_log.DebugFormat("[XXX]: parsed InventoryItemBase {0} - {1}", obj.Name, obj.UUID);
239 return item; 214 return item;
240
241 } 215 }
242 216
243 public static string Serialize(InventoryItemBase inventoryItem, Dictionary<string, object> options, IUserAccountService userAccountService) 217 public static string Serialize(InventoryItemBase inventoryItem, Dictionary<string, object> options, IUserAccountService userAccountService)
@@ -305,14 +279,14 @@ namespace OpenSim.Framework.Serialization.External
305 writer.WriteEndElement(); 279 writer.WriteEndElement();
306 if (options.ContainsKey("creators") && inventoryItem.CreatorData != null && inventoryItem.CreatorData != string.Empty) 280 if (options.ContainsKey("creators") && inventoryItem.CreatorData != null && inventoryItem.CreatorData != string.Empty)
307 writer.WriteElementString("CreatorData", inventoryItem.CreatorData); 281 writer.WriteElementString("CreatorData", inventoryItem.CreatorData);
308 else if (options.ContainsKey("profile")) 282 else if (options.ContainsKey("home"))
309 { 283 {
310 if (userAccountService != null) 284 if (userAccountService != null)
311 { 285 {
312 UserAccount account = userAccountService.GetUserAccount(UUID.Zero, inventoryItem.CreatorIdAsUuid); 286 UserAccount account = userAccountService.GetUserAccount(UUID.Zero, inventoryItem.CreatorIdAsUuid);
313 if (account != null) 287 if (account != null)
314 { 288 {
315 writer.WriteElementString("CreatorData", (string)options["profile"] + "/" + inventoryItem.CreatorIdAsUuid + ";" + account.FirstName + " " + account.LastName); 289 writer.WriteElementString("CreatorData", (string)options["home"] + "/" + inventoryItem.CreatorIdAsUuid + ";" + account.FirstName + " " + account.LastName);
316 } 290 }
317 writer.WriteElementString("CreatorID", inventoryItem.CreatorId); 291 writer.WriteElementString("CreatorID", inventoryItem.CreatorId);
318 } 292 }
diff --git a/OpenSim/Framework/Serialization/External/UserProfileSerializer.cs b/OpenSim/Framework/Serialization/External/UserProfileSerializer.cs
index f50b49a..c685a15 100644
--- a/OpenSim/Framework/Serialization/External/UserProfileSerializer.cs
+++ b/OpenSim/Framework/Serialization/External/UserProfileSerializer.cs
@@ -33,8 +33,11 @@ using OpenSim.Framework;
33namespace OpenSim.Framework.Serialization.External 33namespace OpenSim.Framework.Serialization.External
34{ 34{
35 /// <summary> 35 /// <summary>
36 /// Serialize and deserialize region settings as an external format. 36 /// Serialize and deserialize user profiles as an external format.
37 /// </summary> 37 /// </summary>
38 /// <remarks>
39 /// Currently UNUSED.
40 /// </remarks>
38 public class UserProfileSerializer 41 public class UserProfileSerializer
39 { 42 {
40 public const int MAJOR_VERSION = 0; 43 public const int MAJOR_VERSION = 0;
diff --git a/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs b/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs
index 3607ce8..b8ed9e1 100644
--- a/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs
+++ b/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs
@@ -27,11 +27,12 @@
27 27
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using OpenSim.Framework;
31using OpenSim.Framework.Serialization.External;
32using OpenMetaverse; 30using OpenMetaverse;
33using OpenMetaverse.StructuredData; 31using OpenMetaverse.StructuredData;
34using NUnit.Framework; 32using NUnit.Framework;
33using OpenSim.Framework;
34using OpenSim.Framework.Serialization.External;
35using OpenSim.Tests.Common;
35 36
36namespace OpenSim.Framework.Serialization.Tests 37namespace OpenSim.Framework.Serialization.Tests
37{ 38{
@@ -92,6 +93,8 @@ namespace OpenSim.Framework.Serialization.Tests
92 [Test] 93 [Test]
93 public void LandDataSerializerSerializeTest() 94 public void LandDataSerializerSerializeTest()
94 { 95 {
96 TestHelpers.InMethod();
97
95 string serialized = LandDataSerializer.Serialize(this.land).Replace("\r\n", "\n"); 98 string serialized = LandDataSerializer.Serialize(this.land).Replace("\r\n", "\n");
96 Assert.That(serialized.Length > 0, "Serialize(LandData) returned empty string"); 99 Assert.That(serialized.Length > 0, "Serialize(LandData) returned empty string");
97 100
@@ -112,20 +115,32 @@ namespace OpenSim.Framework.Serialization.Tests
112 /// Test the LandDataSerializer.Deserialize() method 115 /// Test the LandDataSerializer.Deserialize() method
113 /// </summary> 116 /// </summary>
114 [Test] 117 [Test]
115 public void TestLandDataSerializerDeserializeFromStringTest() 118 public void TestLandDataDeserializeNoAccessLists()
119 {
120 TestHelpers.InMethod();
121// log4net.Config.XmlConfigurator.Configure();
122
123 LandData ld = LandDataSerializer.Deserialize(LandDataSerializerTest.preSerialized);
124 Assert.That(ld != null, "Deserialize(string) returned null");
125 Assert.That(ld.GlobalID == this.land.GlobalID, "Reified LandData.GlobalID != original LandData.GlobalID");
126 Assert.That(ld.Name == this.land.Name, "Reified LandData.Name != original LandData.Name");
127 }
128
129 [Test]
130 public void TestLandDataDeserializeWithAccessLists()
116 { 131 {
117 LandData reifiedLandData = LandDataSerializer.Deserialize(LandDataSerializerTest.preSerialized); 132 TestHelpers.InMethod();
118 Assert.That(reifiedLandData != null, "Deserialize(string) returned null"); 133// log4net.Config.XmlConfigurator.Configure();
119 Assert.That(reifiedLandData.GlobalID == this.land.GlobalID, "Reified LandData.GlobalID != original LandData.GlobalID");
120 Assert.That(reifiedLandData.Name == this.land.Name, "Reified LandData.Name != original LandData.Name");
121 134
122 LandData reifiedLandDataWithParcelAccessList = LandDataSerializer.Deserialize(LandDataSerializerTest.preSerializedWithParcelAccessList); 135 LandData ld = LandDataSerializer.Deserialize(LandDataSerializerTest.preSerializedWithParcelAccessList);
123 Assert.That(reifiedLandDataWithParcelAccessList != null, 136 Assert.That(ld != null,
124 "Deserialize(string) returned null (pre-serialized with parcel access list)"); 137 "Deserialize(string) returned null (pre-serialized with parcel access list)");
125 Assert.That(reifiedLandDataWithParcelAccessList.GlobalID == this.landWithParcelAccessList.GlobalID, 138 Assert.That(ld.GlobalID == this.landWithParcelAccessList.GlobalID,
126 "Reified LandData.GlobalID != original LandData.GlobalID (pre-serialized with parcel access list)"); 139 "Reified LandData.GlobalID != original LandData.GlobalID (pre-serialized with parcel access list)");
127 Assert.That(reifiedLandDataWithParcelAccessList.Name == this.landWithParcelAccessList.Name, 140 Assert.That(ld.Name == this.landWithParcelAccessList.Name,
128 "Reified LandData.Name != original LandData.Name (pre-serialized with parcel access list)"); 141 "Reified LandData.Name != original LandData.Name (pre-serialized with parcel access list)");
142 Assert.That(ld.ParcelAccessList.Count, Is.EqualTo(2));
143 Assert.That(ld.ParcelAccessList[0].AgentID, Is.EqualTo(UUID.Parse("62d65d45-c91a-4f77-862c-46557d978b6c")));
129 } 144 }
130 } 145 }
131} 146}
diff --git a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
new file mode 100644
index 0000000..a61e4af
--- /dev/null
+++ b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
@@ -0,0 +1,134 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using OpenMetaverse;
31using OpenMetaverse.StructuredData;
32using NUnit.Framework;
33using OpenSim.Framework;
34using OpenSim.Framework.Serialization.External;
35using OpenSim.Tests.Common;
36
37namespace OpenSim.Framework.Serialization.Tests
38{
39 [TestFixture]
40 public class RegionSettingsSerializerTests
41 {
42 private string m_serializedRs = @"<?xml version=""1.0"" encoding=""utf-16""?>
43<RegionSettings>
44 <General>
45 <AllowDamage>True</AllowDamage>
46 <AllowLandResell>True</AllowLandResell>
47 <AllowLandJoinDivide>True</AllowLandJoinDivide>
48 <BlockFly>True</BlockFly>
49 <BlockLandShowInSearch>True</BlockLandShowInSearch>
50 <BlockTerraform>True</BlockTerraform>
51 <DisableCollisions>True</DisableCollisions>
52 <DisablePhysics>True</DisablePhysics>
53 <DisableScripts>True</DisableScripts>
54 <MaturityRating>1</MaturityRating>
55 <RestrictPushing>True</RestrictPushing>
56 <AgentLimit>40</AgentLimit>
57 <ObjectBonus>1.4</ObjectBonus>
58 </General>
59 <GroundTextures>
60 <Texture1>00000000-0000-0000-0000-000000000020</Texture1>
61 <Texture2>00000000-0000-0000-0000-000000000040</Texture2>
62 <Texture3>00000000-0000-0000-0000-000000000060</Texture3>
63 <Texture4>00000000-0000-0000-0000-000000000080</Texture4>
64 <ElevationLowSW>1.9</ElevationLowSW>
65 <ElevationLowNW>15.9</ElevationLowNW>
66 <ElevationLowSE>49</ElevationLowSE>
67 <ElevationLowNE>45.3</ElevationLowNE>
68 <ElevationHighSW>2.1</ElevationHighSW>
69 <ElevationHighNW>4.5</ElevationHighNW>
70 <ElevationHighSE>9.2</ElevationHighSE>
71 <ElevationHighNE>19.2</ElevationHighNE>
72 </GroundTextures>
73 <Terrain>
74 <WaterHeight>23</WaterHeight>
75 <TerrainRaiseLimit>17.9</TerrainRaiseLimit>
76 <TerrainLowerLimit>0.4</TerrainLowerLimit>
77 <UseEstateSun>True</UseEstateSun>
78 <FixedSun>true</FixedSun>
79 <SunPosition>12</SunPosition>
80 </Terrain>
81</RegionSettings>";
82
83 private RegionSettings m_rs;
84
85 [SetUp]
86 public void Setup()
87 {
88 m_rs = new RegionSettings();
89 m_rs.AgentLimit = 17;
90 m_rs.AllowDamage = true;
91 m_rs.AllowLandJoinDivide = true;
92 m_rs.AllowLandResell = true;
93 m_rs.BlockFly = true;
94 m_rs.BlockShowInSearch = true;
95 m_rs.BlockTerraform = true;
96 m_rs.DisableCollisions = true;
97 m_rs.DisablePhysics = true;
98 m_rs.DisableScripts = true;
99 m_rs.Elevation1NW = 15.9;
100 m_rs.Elevation1NE = 45.3;
101 m_rs.Elevation1SE = 49;
102 m_rs.Elevation1SW = 1.9;
103 m_rs.Elevation2NW = 4.5;
104 m_rs.Elevation2NE = 19.2;
105 m_rs.Elevation2SE = 9.2;
106 m_rs.Elevation2SW = 2.1;
107 m_rs.FixedSun = true;
108 m_rs.SunPosition = 12.0;
109 m_rs.ObjectBonus = 1.4;
110 m_rs.RestrictPushing = true;
111 m_rs.TerrainLowerLimit = 0.4;
112 m_rs.TerrainRaiseLimit = 17.9;
113 m_rs.TerrainTexture1 = UUID.Parse("00000000-0000-0000-0000-000000000020");
114 m_rs.TerrainTexture2 = UUID.Parse("00000000-0000-0000-0000-000000000040");
115 m_rs.TerrainTexture3 = UUID.Parse("00000000-0000-0000-0000-000000000060");
116 m_rs.TerrainTexture4 = UUID.Parse("00000000-0000-0000-0000-000000000080");
117 m_rs.UseEstateSun = true;
118 m_rs.WaterHeight = 23;
119 }
120
121 [Test]
122 public void TestRegionSettingsDeserialize()
123 {
124 TestHelpers.InMethod();
125// log4net.Config.XmlConfigurator.Configure();
126
127 RegionSettings deserRs = RegionSettingsSerializer.Deserialize(m_serializedRs);
128 Assert.That(deserRs, Is.Not.Null);
129 Assert.That(deserRs.TerrainTexture2, Is.EqualTo(m_rs.TerrainTexture2));
130 Assert.That(deserRs.DisablePhysics, Is.EqualTo(m_rs.DisablePhysics));
131 Assert.That(deserRs.TerrainLowerLimit, Is.EqualTo(m_rs.TerrainLowerLimit));
132 }
133 }
134}
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 8c0a7e9..f019a83 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -4497,7 +4497,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4497 EstateCovenantReplyPacket einfopack = new EstateCovenantReplyPacket(); 4497 EstateCovenantReplyPacket einfopack = new EstateCovenantReplyPacket();
4498 EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock(); 4498 EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock();
4499 edata.CovenantID = covenant; 4499 edata.CovenantID = covenant;
4500 edata.CovenantTimestamp = 0; 4500 edata.CovenantTimestamp = (uint) m_scene.RegionInfo.RegionSettings.CovenantChangedDateTime;
4501 edata.EstateOwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; 4501 edata.EstateOwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
4502 edata.EstateName = Utils.StringToBytes(m_scene.RegionInfo.EstateSettings.EstateName); 4502 edata.EstateName = Utils.StringToBytes(m_scene.RegionInfo.EstateSettings.EstateName);
4503 einfopack.Data = edata; 4503 einfopack.Data = edata;
@@ -4505,8 +4505,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4505 } 4505 }
4506 4506
4507 public void SendDetailedEstateData( 4507 public void SendDetailedEstateData(
4508 UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, 4508 UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition,
4509 UUID covenant, string abuseEmail, UUID estateOwner) 4509 UUID covenant, uint covenantChanged, string abuseEmail, UUID estateOwner)
4510 { 4510 {
4511// m_log.DebugFormat( 4511// m_log.DebugFormat(
4512// "[LLCLIENTVIEW]: Sending detailed estate data to {0} with covenant asset id {1}", Name, covenant); 4512// "[LLCLIENTVIEW]: Sending detailed estate data to {0} with covenant asset id {1}", Name, covenant);
@@ -4531,7 +4531,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4531 returnblock[4].Parameter = Utils.StringToBytes(sunPosition.ToString()); 4531 returnblock[4].Parameter = Utils.StringToBytes(sunPosition.ToString());
4532 returnblock[5].Parameter = Utils.StringToBytes(parentEstate.ToString()); 4532 returnblock[5].Parameter = Utils.StringToBytes(parentEstate.ToString());
4533 returnblock[6].Parameter = Utils.StringToBytes(covenant.ToString()); 4533 returnblock[6].Parameter = Utils.StringToBytes(covenant.ToString());
4534 returnblock[7].Parameter = Utils.StringToBytes("1160895077"); // what is this? 4534 returnblock[7].Parameter = Utils.StringToBytes(covenantChanged.ToString());
4535 returnblock[8].Parameter = Utils.StringToBytes("1"); // what is this? 4535 returnblock[8].Parameter = Utils.StringToBytes("1"); // what is this?
4536 returnblock[9].Parameter = Utils.StringToBytes(abuseEmail); 4536 returnblock[9].Parameter = Utils.StringToBytes(abuseEmail);
4537 4537
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
index 63fde07..c6e9964 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
@@ -412,7 +412,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
412 { 412 {
413 int majorVersion, minorVersion; 413 int majorVersion, minorVersion;
414 414
415 if (options.ContainsKey("profile")) 415 if (options.ContainsKey("home"))
416 { 416 {
417 majorVersion = 1; 417 majorVersion = 1;
418 minorVersion = 2; 418 minorVersion = 2;
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
index 150d913..a81f36c 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
@@ -122,7 +122,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
122 122
123 scene.AddCommand( 123 scene.AddCommand(
124 this, "save iar", 124 this, "save iar",
125 "save iar [-h|--home=<url>] [--noassets] <first> <last> <inventory path> <password> [<IAR path>] [--v|-verbose]", 125 "save iar [-h|--home=<url>] [--noassets] <first> <last> <inventory path> <password> [<IAR path>] [-c|--creators] [-v|--verbose]",
126 "Save user inventory archive (IAR).", 126 "Save user inventory archive (IAR).",
127 "<first> is the user's first name." + Environment.NewLine 127 "<first> is the user's first name." + Environment.NewLine
128 + "<last> is the user's last name." + Environment.NewLine 128 + "<last> is the user's last name." + Environment.NewLine
@@ -396,7 +396,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
396 396
397 OptionSet ops = new OptionSet(); 397 OptionSet ops = new OptionSet();
398 //ops.Add("v|version=", delegate(string v) { options["version"] = v; }); 398 //ops.Add("v|version=", delegate(string v) { options["version"] = v; });
399 ops.Add("p|profile=", delegate(string v) { options["profile"] = v; }); 399 ops.Add("h|home=", delegate(string v) { options["home"] = v; });
400 ops.Add("v|verbose", delegate(string v) { options["verbose"] = v; }); 400 ops.Add("v|verbose", delegate(string v) { options["verbose"] = v; });
401 ops.Add("c|creators", delegate(string v) { options["creators"] = v; }); 401 ops.Add("c|creators", delegate(string v) { options["creators"] = v; });
402 ops.Add("noassets", delegate(string v) { options["noassets"] = v != null; }); 402 ops.Add("noassets", delegate(string v) { options["noassets"] = v != null; });
@@ -408,13 +408,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
408 if (mainParams.Count < 6) 408 if (mainParams.Count < 6)
409 { 409 {
410 m_log.Error( 410 m_log.Error(
411 "[INVENTORY ARCHIVER]: usage is save iar [--p|-profile=<url>] [--noassets] <first name> <last name> <inventory path> <user password> [<save file path>]"); 411 "[INVENTORY ARCHIVER]: usage is save iar [-h|--home=<url>] [--noassets] <first name> <last name> <inventory path> <user password> [<save file path>] [-c|--creators] [-v|--verbose]");
412 return; 412 return;
413 } 413 }
414 414
415 m_log.Info("[INVENTORY ARCHIVER]: PLEASE NOTE THAT THIS FACILITY IS EXPERIMENTAL. BUG REPORTS WELCOME."); 415 m_log.Info("[INVENTORY ARCHIVER]: PLEASE NOTE THAT THIS FACILITY IS EXPERIMENTAL. BUG REPORTS WELCOME.");
416 if (options.ContainsKey("profile")) 416 if (options.ContainsKey("home"))
417 m_log.WarnFormat("[INVENTORY ARCHIVER]: Please be aware that inventory archives with creator information are not compatible with OpenSim 0.7.0.2 and earlier. Do not use the -profile option if you want to produce a compatible IAR"); 417 m_log.WarnFormat("[INVENTORY ARCHIVER]: Please be aware that inventory archives with creator information are not compatible with OpenSim 0.7.0.2 and earlier. Do not use the -home option if you want to produce a compatible IAR");
418 418
419 string firstName = mainParams[2]; 419 string firstName = mainParams[2];
420 string lastName = mainParams[3]; 420 string lastName = mainParams[3];
diff --git a/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs
index 900260d..7b872b9 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs
@@ -306,10 +306,10 @@ namespace OpenSim.Region.CoreModules.World.Archiver
306 306
307 protected AssetBase PostProcess(AssetBase asset) 307 protected AssetBase PostProcess(AssetBase asset)
308 { 308 {
309 if (asset.Type == (sbyte)AssetType.Object && asset.Data != null && m_options.ContainsKey("profile")) 309 if (asset.Type == (sbyte)AssetType.Object && asset.Data != null && m_options.ContainsKey("home"))
310 { 310 {
311 //m_log.DebugFormat("[ARCHIVER]: Rewriting object data for {0}", asset.ID); 311 //m_log.DebugFormat("[ARCHIVER]: Rewriting object data for {0}", asset.ID);
312 string xml = ExternalRepresentationUtils.RewriteSOP(Utils.BytesToString(asset.Data), m_options["profile"].ToString(), m_userAccountService, m_scopeID); 312 string xml = ExternalRepresentationUtils.RewriteSOP(Utils.BytesToString(asset.Data), m_options["home"].ToString(), m_userAccountService, m_scopeID);
313 asset.Data = Utils.StringToBytes(xml); 313 asset.Data = Utils.StringToBytes(xml);
314 } 314 }
315 return asset; 315 return asset;
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
index d5e3314..35f47d2 100644
--- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
@@ -88,6 +88,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
88 GetEstateFlags(), 88 GetEstateFlags(),
89 sun, 89 sun,
90 Scene.RegionInfo.RegionSettings.Covenant, 90 Scene.RegionInfo.RegionSettings.Covenant,
91 (uint) Scene.RegionInfo.RegionSettings.CovenantChangedDateTime,
91 Scene.RegionInfo.EstateSettings.AbuseEmail, 92 Scene.RegionInfo.EstateSettings.AbuseEmail,
92 estateOwner); 93 estateOwner);
93 } 94 }
@@ -285,6 +286,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
285// remoteClient.Name, estateCovenantID); 286// remoteClient.Name, estateCovenantID);
286 287
287 Scene.RegionInfo.RegionSettings.Covenant = estateCovenantID; 288 Scene.RegionInfo.RegionSettings.Covenant = estateCovenantID;
289 Scene.RegionInfo.RegionSettings.CovenantChangedDateTime = Util.UnixTimeSinceEpoch();
288 Scene.RegionInfo.RegionSettings.Save(); 290 Scene.RegionInfo.RegionSettings.Save();
289 TriggerRegionInfoChange(); 291 TriggerRegionInfoChange();
290 } 292 }
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 817736f..58de44e 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1491,12 +1491,27 @@ namespace OpenSim.Region.Framework.Scenes
1491// m_log.DebugFormat( 1491// m_log.DebugFormat(
1492// "[PRIM INVENTORY]: Updating item {0} in {1} for UpdateTaskInventory()", 1492// "[PRIM INVENTORY]: Updating item {0} in {1} for UpdateTaskInventory()",
1493// currentItem.Name, part.Name); 1493// currentItem.Name, part.Name);
1494 IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>(); 1494
1495 if (agentTransactions != null) 1495 // Only look for an uploaded updated asset if we are passed a transaction ID. This is only the
1496 // case for updates uploded through UDP. Updates uploaded via a capability (e.g. a script update)
1497 // will not pass in a transaction ID in the update message.
1498 if (transactionID != UUID.Zero)
1496 { 1499 {
1497 agentTransactions.HandleTaskItemUpdateFromTransaction( 1500 IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>();
1498 remoteClient, part, transactionID, currentItem); 1501 if (agentTransactions != null)
1502 {
1503 agentTransactions.HandleTaskItemUpdateFromTransaction(
1504 remoteClient, part, transactionID, currentItem);
1505
1506// if ((InventoryType)itemInfo.InvType == InventoryType.Notecard)
1507// remoteClient.SendAgentAlertMessage("Notecard saved", false);
1508// else if ((InventoryType)itemInfo.InvType == InventoryType.LSL)
1509// remoteClient.SendAgentAlertMessage("Script saved", false);
1510// else
1511// remoteClient.SendAgentAlertMessage("Item saved", false);
1512 }
1499 } 1513 }
1514
1500 // Base ALWAYS has move 1515 // Base ALWAYS has move
1501 currentItem.BasePermissions |= (uint)PermissionMask.Move; 1516 currentItem.BasePermissions |= (uint)PermissionMask.Move;
1502 1517
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 0d14963..a6c234e 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2781,10 +2781,6 @@ namespace OpenSim.Region.Framework.Scenes
2781 if (ParentGroup == null) 2781 if (ParentGroup == null)
2782 return; 2782 return;
2783 2783
2784 // When running OpenSim tests, Scene (and EventManager can be null).
2785 // Need to fix tests before we can trigger this here
2786 // ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this);
2787
2788 ParentGroup.QueueForUpdateCheck(); 2784 ParentGroup.QueueForUpdateCheck();
2789 2785
2790 int timeNow = Util.UnixTimeSinceEpoch(); 2786 int timeNow = Util.UnixTimeSinceEpoch();
@@ -2806,6 +2802,9 @@ namespace OpenSim.Region.Framework.Scenes
2806 // m_log.DebugFormat( 2802 // m_log.DebugFormat(
2807 // "[SCENE OBJECT PART]: Scheduling full update for {0}, {1} at {2}", 2803 // "[SCENE OBJECT PART]: Scheduling full update for {0}, {1} at {2}",
2808 // UUID, Name, TimeStampFull); 2804 // UUID, Name, TimeStampFull);
2805
2806 if (ParentGroup.Scene != null)
2807 ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this);
2809 } 2808 }
2810 2809
2811 /// <summary> 2810 /// <summary>
@@ -2817,15 +2816,12 @@ namespace OpenSim.Region.Framework.Scenes
2817 if (ParentGroup == null) 2816 if (ParentGroup == null)
2818 return; 2817 return;
2819 2818
2820 // When running OpenSim tests, Scene (and EventManager can be null).
2821 // Need to fix tests before we can trigger this here
2822 // ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this);
2823
2824 // This was pulled from SceneViewer. Attachments always receive full updates. 2819 // This was pulled from SceneViewer. Attachments always receive full updates.
2825 // I could not verify if this is a requirement but this maintains existing behavior 2820 // I could not verify if this is a requirement but this maintains existing behavior
2826 if (ParentGroup.IsAttachment) 2821 if (ParentGroup.IsAttachment)
2827 { 2822 {
2828 ScheduleFullUpdate(); 2823 ScheduleFullUpdate();
2824 return;
2829 } 2825 }
2830 2826
2831 if (UpdateFlag == UpdateRequired.NONE) 2827 if (UpdateFlag == UpdateRequired.NONE)
@@ -2840,6 +2836,9 @@ namespace OpenSim.Region.Framework.Scenes
2840 // "[SCENE OBJECT PART]: Scheduling terse update for {0}, {1} at {2}", 2836 // "[SCENE OBJECT PART]: Scheduling terse update for {0}, {1} at {2}",
2841 // UUID, Name, TimeStampTerse); 2837 // UUID, Name, TimeStampTerse);
2842 } 2838 }
2839
2840 if (ParentGroup.Scene != null)
2841 ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this);
2843 } 2842 }
2844 2843
2845 public void ScriptSetPhysicsStatus(bool UsePhysics) 2844 public void ScriptSetPhysicsStatus(bool UsePhysics)
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
index 6303cb1..ba33122 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
@@ -34,6 +34,7 @@ using System.Xml;
34using log4net; 34using log4net;
35using OpenMetaverse; 35using OpenMetaverse;
36using OpenSim.Framework; 36using OpenSim.Framework;
37using OpenSim.Framework.Serialization.External;
37using OpenSim.Region.Framework.Interfaces; 38using OpenSim.Region.Framework.Interfaces;
38using OpenSim.Region.Framework.Scenes; 39using OpenSim.Region.Framework.Scenes;
39 40
@@ -276,14 +277,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
276 277
277 #region manual serialization 278 #region manual serialization
278 279
279 private delegate void SOPXmlProcessor(SceneObjectPart sop, XmlTextReader reader); 280 private static Dictionary<string, Action<SceneObjectPart, XmlTextReader>> m_SOPXmlProcessors
280 private static Dictionary<string, SOPXmlProcessor> m_SOPXmlProcessors = new Dictionary<string, SOPXmlProcessor>(); 281 = new Dictionary<string, Action<SceneObjectPart, XmlTextReader>>();
281 282
282 private delegate void TaskInventoryXmlProcessor(TaskInventoryItem item, XmlTextReader reader); 283 private static Dictionary<string, Action<TaskInventoryItem, XmlTextReader>> m_TaskInventoryXmlProcessors
283 private static Dictionary<string, TaskInventoryXmlProcessor> m_TaskInventoryXmlProcessors = new Dictionary<string, TaskInventoryXmlProcessor>(); 284 = new Dictionary<string, Action<TaskInventoryItem, XmlTextReader>>();
284 285
285 private delegate void ShapeXmlProcessor(PrimitiveBaseShape shape, XmlTextReader reader); 286 private static Dictionary<string, Action<PrimitiveBaseShape, XmlTextReader>> m_ShapeXmlProcessors
286 private static Dictionary<string, ShapeXmlProcessor> m_ShapeXmlProcessors = new Dictionary<string, ShapeXmlProcessor>(); 287 = new Dictionary<string, Action<PrimitiveBaseShape, XmlTextReader>>();
287 288
288 static SceneObjectSerializer() 289 static SceneObjectSerializer()
289 { 290 {
@@ -1480,34 +1481,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1480 1481
1481 reader.ReadStartElement("SceneObjectPart"); 1482 reader.ReadStartElement("SceneObjectPart");
1482 1483
1483 string nodeName = string.Empty; 1484 ExternalRepresentationUtils.ExecuteReadProcessors(
1484 while (reader.NodeType != XmlNodeType.EndElement) 1485 obj,
1485 { 1486 m_SOPXmlProcessors,
1486 nodeName = reader.Name; 1487 reader,
1487 SOPXmlProcessor p = null; 1488 (o, nodeName, e)
1488 if (m_SOPXmlProcessors.TryGetValue(reader.Name, out p)) 1489 => m_log.ErrorFormat(
1489 { 1490 "[SceneObjectSerializer]: Exception while parsing {0} in object {1} {2}: {3}{4}",
1490 //m_log.DebugFormat("[XXX] Processing: {0}", reader.Name); 1491 ((SceneObjectPart)o).Name, ((SceneObjectPart)o).UUID, nodeName, e.Message, e.StackTrace));
1491 try
1492 {
1493 p(obj, reader);
1494 }
1495 catch (Exception e)
1496 {
1497 m_log.DebugFormat(
1498 "[SceneObjectSerializer]: exception while parsing {0} in object {1} {2}: {3}{4}",
1499 obj.Name, obj.UUID, nodeName, e.Message, e.StackTrace);
1500 if (reader.NodeType == XmlNodeType.EndElement)
1501 reader.Read();
1502 }
1503 }
1504 else
1505 {
1506// m_log.DebugFormat("[SceneObjectSerializer]: caught unknown element {0}", nodeName);
1507 reader.ReadOuterXml(); // ignore
1508 }
1509
1510 }
1511 1492
1512 reader.ReadEndElement(); // SceneObjectPart 1493 reader.ReadEndElement(); // SceneObjectPart
1513 1494
@@ -1526,17 +1507,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1526 reader.ReadStartElement("TaskInventoryItem", String.Empty); // TaskInventory 1507 reader.ReadStartElement("TaskInventoryItem", String.Empty); // TaskInventory
1527 1508
1528 TaskInventoryItem item = new TaskInventoryItem(); 1509 TaskInventoryItem item = new TaskInventoryItem();
1529 while (reader.NodeType != XmlNodeType.EndElement) 1510
1530 { 1511 ExternalRepresentationUtils.ExecuteReadProcessors(
1531 TaskInventoryXmlProcessor p = null; 1512 item,
1532 if (m_TaskInventoryXmlProcessors.TryGetValue(reader.Name, out p)) 1513 m_TaskInventoryXmlProcessors,
1533 p(item, reader); 1514 reader);
1534 else 1515
1535 {
1536// m_log.DebugFormat("[SceneObjectSerializer]: caught unknown element in TaskInventory {0}, {1}", reader.Name, reader.Value);
1537 reader.ReadOuterXml();
1538 }
1539 }
1540 reader.ReadEndElement(); // TaskInventoryItem 1516 reader.ReadEndElement(); // TaskInventoryItem
1541 tinv.Add(item.ItemID, item); 1517 tinv.Add(item.ItemID, item);
1542 1518
@@ -1563,35 +1539,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1563 1539
1564 reader.ReadStartElement(name, String.Empty); // Shape 1540 reader.ReadStartElement(name, String.Empty); // Shape
1565 1541
1566 string nodeName = string.Empty; 1542 ExternalRepresentationUtils.ExecuteReadProcessors(
1567 while (reader.NodeType != XmlNodeType.EndElement) 1543 shape,
1568 { 1544 m_ShapeXmlProcessors,
1569 nodeName = reader.Name; 1545 reader,
1570 //m_log.DebugFormat("[XXX] Processing: {0}", reader.Name); 1546 (o, nodeName, e)
1571 ShapeXmlProcessor p = null; 1547 => m_log.ErrorFormat(
1572 if (m_ShapeXmlProcessors.TryGetValue(reader.Name, out p)) 1548 "[SceneObjectSerializer]: Exception while parsing Shape property {0}: {1}{2}",
1573 { 1549 nodeName, e.Message, e.StackTrace));
1574 try
1575 {
1576 p(shape, reader);
1577 }
1578 catch (Exception e)
1579 {
1580 errors = true;
1581 m_log.DebugFormat(
1582 "[SceneObjectSerializer]: exception while parsing Shape property {0}: {1}{2}",
1583 nodeName, e.Message, e.StackTrace);
1584
1585 if (reader.NodeType == XmlNodeType.EndElement)
1586 reader.Read();
1587 }
1588 }
1589 else
1590 {
1591 // m_log.DebugFormat("[SceneObjectSerializer]: caught unknown element in Shape {0}", reader.Name);
1592 reader.ReadOuterXml();
1593 }
1594 }
1595 1550
1596 reader.ReadEndElement(); // Shape 1551 reader.ReadEndElement(); // Shape
1597 1552
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
index 6f99abd..c582cf6 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
@@ -49,7 +49,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
49// log4net.Config.XmlConfigurator.Configure(); 49// log4net.Config.XmlConfigurator.Configure();
50 50
51 UUID userId = TestHelpers.ParseTail(0x1); 51 UUID userId = TestHelpers.ParseTail(0x1);
52 UUID itemId = TestHelpers.ParseTail(0x2); 52// UUID itemId = TestHelpers.ParseTail(0x2);
53 string itemName = "Test Script Item"; 53 string itemName = "Test Script Item";
54 54
55 Scene scene = SceneHelpers.SetupScene(); 55 Scene scene = SceneHelpers.SetupScene();
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
index d4c299f..ed9b179 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
@@ -174,7 +174,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
174 TestHelpers.InMethod(); 174 TestHelpers.InMethod();
175// log4net.Config.XmlConfigurator.Configure(); 175// log4net.Config.XmlConfigurator.Configure();
176 176
177 UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); 177// UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001");
178 178
179 TestScene myScene1 = SceneHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000); 179 TestScene myScene1 = SceneHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000);
180 TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); 180 TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000);
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 8fe3199..7d7c5c5 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -1250,7 +1250,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
1250 1250
1251 } 1251 }
1252 1252
1253 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner) 1253 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, uint covenantChanged, string abuseEmail, UUID estateOwner)
1254 { 1254 {
1255 1255
1256 } 1256 }
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index 7f5372c..03b52c0 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -937,7 +937,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
937 public void SendTelehubInfo(UUID ObjectID, string ObjectName, Vector3 ObjectPos, Quaternion ObjectRot, List<Vector3> SpawnPoint) 937 public void SendTelehubInfo(UUID ObjectID, string ObjectName, Vector3 ObjectPos, Quaternion ObjectRot, List<Vector3> SpawnPoint)
938 { 938 {
939 } 939 }
940 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner) 940 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, uint covenantChanged, string abuseEmail, UUID estateOwner)
941 { 941 {
942 } 942 }
943 943
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
index 3831d7a..6a48b89 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
@@ -140,24 +140,26 @@ namespace OpenSim.Region.OptionalModules.World.NPC
140// acd.AgentID, i, acd.Appearance.Texture.FaceTextures[i]); 140// acd.AgentID, i, acd.Appearance.Texture.FaceTextures[i]);
141// } 141// }
142 142
143 scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd); 143 lock (m_avatars)
144 scene.AddNewClient(npcAvatar, PresenceType.Npc);
145
146 ScenePresence sp;
147 if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp))
148 { 144 {
149 m_log.DebugFormat( 145 scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd);
150 "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", sp.Name, sp.UUID); 146 scene.AddNewClient(npcAvatar, PresenceType.Npc);
151 147
152 sp.CompleteMovement(npcAvatar, false); 148 ScenePresence sp;
153 } 149 if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp))
154 else 150 {
155 { 151 m_log.DebugFormat(
156 m_log.WarnFormat("[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID); 152 "[NPC MODULE]: Successfully retrieved scene presence for NPC {0} {1}", sp.Name, sp.UUID);
157 } 153
154 sp.CompleteMovement(npcAvatar, false);
155 }
156 else
157 {
158 m_log.WarnFormat("[NPC MODULE]: Could not find scene presence for NPC {0} {1}", sp.Name, sp.UUID);
159 }
158 160
159 lock (m_avatars)
160 m_avatars.Add(npcAvatar.AgentId, npcAvatar); 161 m_avatars.Add(npcAvatar.AgentId, npcAvatar);
162 }
161 163
162 m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId); 164 m_log.DebugFormat("[NPC MODULE]: Created NPC with id {0}", npcAvatar.AgentId);
163 165
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
index 9489957..3d0e5cb 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
@@ -624,20 +624,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
624 public const string URL_REQUEST_GRANTED = "URL_REQUEST_GRANTED"; 624 public const string URL_REQUEST_GRANTED = "URL_REQUEST_GRANTED";
625 public const string URL_REQUEST_DENIED = "URL_REQUEST_DENIED"; 625 public const string URL_REQUEST_DENIED = "URL_REQUEST_DENIED";
626 626
627 public static readonly LSLInteger RC_REJECT_TYPES = 2; 627 public static readonly LSLInteger RC_REJECT_TYPES = 0;
628 public static readonly LSLInteger RC_DATA_FLAGS = 4; 628 public static readonly LSLInteger RC_DETECT_PHANTOM = 1;
629 public static readonly LSLInteger RC_MAX_HITS = 8; 629 public static readonly LSLInteger RC_DATA_FLAGS = 2;
630 public static readonly LSLInteger RC_DETECT_PHANTOM = 16; 630 public static readonly LSLInteger RC_MAX_HITS = 3;
631 631
632 public static readonly LSLInteger RC_REJECT_AGENTS = 2; 632 public static readonly LSLInteger RC_REJECT_AGENTS = 1;
633 public static readonly LSLInteger RC_REJECT_PHYSICAL = 4; 633 public static readonly LSLInteger RC_REJECT_PHYSICAL = 2;
634 public static readonly LSLInteger RC_REJECT_NONPHYSICAL = 8; 634 public static readonly LSLInteger RC_REJECT_NONPHYSICAL = 4;
635 public static readonly LSLInteger RC_REJECT_LAND = 16; 635 public static readonly LSLInteger RC_REJECT_LAND = 8;
636 636
637 public static readonly LSLInteger RC_GET_NORMAL = 2; 637 public static readonly LSLInteger RC_GET_NORMAL = 1;
638 public static readonly LSLInteger RC_GET_ROOT_KEY = 4; 638 public static readonly LSLInteger RC_GET_ROOT_KEY = 2;
639 public static readonly LSLInteger RC_GET_LINK_NUM = 8; 639 public static readonly LSLInteger RC_GET_LINK_NUM = 4;
640 640
641 public static readonly LSLInteger RCERR_CAST_TIME_EXCEEDED = 1; 641 public static readonly LSLInteger RCERR_UNKNOWN = -1;
642 public static readonly LSLInteger RCERR_SIM_PERF_LOW = -2;
643 public static readonly LSLInteger RCERR_CAST_TIME_EXCEEDED = 3;
642 } 644 }
643} 645}
diff --git a/OpenSim/Services/AuthenticationService/PasswordAuthenticationService.cs b/OpenSim/Services/AuthenticationService/PasswordAuthenticationService.cs
index d5a6521..0d7ced9 100644
--- a/OpenSim/Services/AuthenticationService/PasswordAuthenticationService.cs
+++ b/OpenSim/Services/AuthenticationService/PasswordAuthenticationService.cs
@@ -129,7 +129,7 @@ namespace OpenSim.Services.AuthenticationService
129 { 129 {
130 m_log.DebugFormat( 130 m_log.DebugFormat(
131 "[AUTH SERVICE]: Salted hash {0} of given password did not match salted hash of {1} for PrincipalID {2}. Authentication failure.", 131 "[AUTH SERVICE]: Salted hash {0} of given password did not match salted hash of {1} for PrincipalID {2}. Authentication failure.",
132 principalID); 132 hashed, data.Data["passwordHash"], principalID);
133 return String.Empty; 133 return String.Empty;
134 } 134 }
135 } 135 }
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index c32dbf5..fa750ab 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -977,7 +977,7 @@ namespace OpenSim.Tests.Common.Mock
977 { 977 {
978 } 978 }
979 979
980 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner) 980 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, uint covenantChanged, string abuseEmail, UUID estateOwner)
981 { 981 {
982 } 982 }
983 983
diff --git a/bin/OpenSim.Framework.Serialization.Tests.dll.config b/bin/OpenSim.Framework.Serialization.Tests.dll.config
new file mode 100644
index 0000000..a3f681d
--- /dev/null
+++ b/bin/OpenSim.Framework.Serialization.Tests.dll.config
@@ -0,0 +1,33 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <configSections>
4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
5 </configSections>
6 <runtime>
7 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
8 <dependentAssembly>
9 <assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="Neutral" />
10 <bindingRedirect oldVersion="2.0.6.0" newVersion="2.4.6.0" />
11 <bindingRedirect oldVersion="2.1.4.0" newVersion="2.4.6.0" />
12 <bindingRedirect oldVersion="2.2.8.0" newVersion="2.4.6.0" />
13 </dependentAssembly>
14 </assemblyBinding>
15 </runtime>
16 <log4net>
17 <!-- A1 is set to be a ConsoleAppender -->
18 <appender name="A1" type="log4net.Appender.ConsoleAppender">
19
20 <!-- A1 uses PatternLayout -->
21 <layout type="log4net.Layout.PatternLayout">
22 <!-- Print the date in ISO 8601 format -->
23 <conversionPattern value="%date [%thread] %-5level %logger %ndc - %message%newline" />
24 </layout>
25 </appender>
26
27 <!-- Set root logger level to DEBUG and its only appender to A1 -->
28 <root>
29 <level value="DEBUG" />
30 <appender-ref ref="A1" />
31 </root>
32 </log4net>
33</configuration>
diff --git a/prebuild.xml b/prebuild.xml
index aab61ad..20aa24f 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -218,6 +218,7 @@
218 218
219 <ReferencePath>../../../bin/</ReferencePath> 219 <ReferencePath>../../../bin/</ReferencePath>
220 <Reference name="System"/> 220 <Reference name="System"/>
221 <Reference name="System.Core"/>
221 <Reference name="System.Xml"/> 222 <Reference name="System.Xml"/>
222 <Reference name="log4net" path="../../../bin/"/> 223 <Reference name="log4net" path="../../../bin/"/>
223 <Reference name="OpenMetaverse" path="../../../bin/"/> 224 <Reference name="OpenMetaverse" path="../../../bin/"/>
@@ -797,6 +798,7 @@
797 <Reference name="OpenSim.Framework.Communications"/> 798 <Reference name="OpenSim.Framework.Communications"/>
798 <Reference name="OpenSim.Data"/> 799 <Reference name="OpenSim.Data"/>
799 <Reference name="OpenSim.Framework.Console"/> 800 <Reference name="OpenSim.Framework.Console"/>
801 <Reference name="OpenSim.Framework.Serialization"/>
800 <Reference name="OpenSim.Framework.Servers"/> 802 <Reference name="OpenSim.Framework.Servers"/>
801 <Reference name="OpenSim.Framework.Servers.HttpServer"/> 803 <Reference name="OpenSim.Framework.Servers.HttpServer"/>
802 <Reference name="OpenSim.Framework.Statistics"/> 804 <Reference name="OpenSim.Framework.Statistics"/>