diff options
author | UbitUmarov | 2017-06-10 02:48:51 +0100 |
---|---|---|
committer | UbitUmarov | 2017-06-10 02:48:51 +0100 |
commit | b5910cfdb7461d523e2dc34dc9f33fe096766525 (patch) | |
tree | c8fa1bfd77c9b77f636117b953422f2cf66c0c07 | |
parent | Merge branch 'master' into httptests (diff) | |
parent | add a adicional in transit flag to signal HG tps, and use it to ignore userna... (diff) | |
download | opensim-SC-b5910cfdb7461d523e2dc34dc9f33fe096766525.zip opensim-SC-b5910cfdb7461d523e2dc34dc9f33fe096766525.tar.gz opensim-SC-b5910cfdb7461d523e2dc34dc9f33fe096766525.tar.bz2 opensim-SC-b5910cfdb7461d523e2dc34dc9f33fe096766525.tar.xz |
merge
14 files changed, 178 insertions, 107 deletions
diff --git a/OpenSim/Framework/Monitoring/Watchdog.cs b/OpenSim/Framework/Monitoring/Watchdog.cs index 5fb725c..9cac451 100644 --- a/OpenSim/Framework/Monitoring/Watchdog.cs +++ b/OpenSim/Framework/Monitoring/Watchdog.cs | |||
@@ -254,14 +254,12 @@ namespace OpenSim.Framework.Monitoring | |||
254 | 254 | ||
255 | twi.Cleanup(); | 255 | twi.Cleanup(); |
256 | m_threads.Remove(threadID); | 256 | m_threads.Remove(threadID); |
257 | |||
258 | return true; | 257 | return true; |
259 | } | 258 | } |
260 | else | 259 | else |
261 | { | 260 | { |
262 | m_log.WarnFormat( | 261 | m_log.WarnFormat( |
263 | "[WATCHDOG]: Requested to remove thread with ID {0} but this is not being monitored", threadID); | 262 | "[WATCHDOG]: Requested to remove thread with ID {0} but this is not being monitored", threadID); |
264 | |||
265 | return false; | 263 | return false; |
266 | } | 264 | } |
267 | } | 265 | } |
@@ -360,7 +358,7 @@ namespace OpenSim.Framework.Monitoring | |||
360 | List<ThreadWatchdogInfo> callbackInfos = null; | 358 | List<ThreadWatchdogInfo> callbackInfos = null; |
361 | List<ThreadWatchdogInfo> threadsToRemove = null; | 359 | List<ThreadWatchdogInfo> threadsToRemove = null; |
362 | 360 | ||
363 | const ThreadState thgone = ThreadState.Stopped | ThreadState.Aborted | ThreadState.AbortRequested; | 361 | const ThreadState thgone = ThreadState.Stopped; |
364 | 362 | ||
365 | lock (m_threads) | 363 | lock (m_threads) |
366 | { | 364 | { |
@@ -368,7 +366,7 @@ namespace OpenSim.Framework.Monitoring | |||
368 | { | 366 | { |
369 | if(!m_enabled) | 367 | if(!m_enabled) |
370 | return; | 368 | return; |
371 | if(!threadInfo.Thread.IsAlive || (threadInfo.Thread.ThreadState & thgone) != 0) | 369 | if((threadInfo.Thread.ThreadState & thgone) != 0) |
372 | { | 370 | { |
373 | if(threadsToRemove == null) | 371 | if(threadsToRemove == null) |
374 | threadsToRemove = new List<ThreadWatchdogInfo>(); | 372 | threadsToRemove = new List<ThreadWatchdogInfo>(); |
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs index a830551..96d78d3 100644 --- a/OpenSim/Framework/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/PrimitiveBaseShape.cs | |||
@@ -1580,35 +1580,48 @@ namespace OpenSim.Framework | |||
1580 | { | 1580 | { |
1581 | MediaList ml = new MediaList(); | 1581 | MediaList ml = new MediaList(); |
1582 | ml.ReadXml(rawXml); | 1582 | ml.ReadXml(rawXml); |
1583 | if(ml.Count == 0) | ||
1584 | return null; | ||
1583 | return ml; | 1585 | return ml; |
1584 | } | 1586 | } |
1585 | 1587 | ||
1586 | public void ReadXml(string rawXml) | 1588 | public void ReadXml(string rawXml) |
1587 | { | 1589 | { |
1588 | using (StringReader sr = new StringReader(rawXml)) | 1590 | try |
1589 | { | 1591 | { |
1590 | using (XmlTextReader xtr = new XmlTextReader(sr)) | 1592 | using (StringReader sr = new StringReader(rawXml)) |
1591 | { | 1593 | { |
1592 | xtr.MoveToContent(); | 1594 | using (XmlTextReader xtr = new XmlTextReader(sr)) |
1595 | { | ||
1596 | xtr.MoveToContent(); | ||
1593 | 1597 | ||
1594 | string type = xtr.GetAttribute("type"); | 1598 | string type = xtr.GetAttribute("type"); |
1595 | //m_log.DebugFormat("[MOAP]: Loaded media texture entry with type {0}", type); | 1599 | //m_log.DebugFormat("[MOAP]: Loaded media texture entry with type {0}", type); |
1596 | 1600 | ||
1597 | if (type != MEDIA_TEXTURE_TYPE) | 1601 | if (type != MEDIA_TEXTURE_TYPE) |
1598 | return; | 1602 | return; |
1599 | 1603 | ||
1600 | xtr.ReadStartElement("OSMedia"); | 1604 | xtr.ReadStartElement("OSMedia"); |
1605 | OSD osdp = OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml()); | ||
1606 | if(osdp == null || !(osdp is OSDArray)) | ||
1607 | return; | ||
1601 | 1608 | ||
1602 | OSDArray osdMeArray = (OSDArray)OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml()); | 1609 | OSDArray osdMeArray = osdp as OSDArray; |
1603 | foreach (OSD osdMe in osdMeArray) | 1610 | if(osdMeArray.Count == 0) |
1604 | { | 1611 | return; |
1605 | MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry()); | ||
1606 | Add(me); | ||
1607 | } | ||
1608 | 1612 | ||
1609 | xtr.ReadEndElement(); | 1613 | foreach (OSD osdMe in osdMeArray) |
1614 | { | ||
1615 | MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry()); | ||
1616 | Add(me); | ||
1617 | } | ||
1618 | } | ||
1610 | } | 1619 | } |
1611 | } | 1620 | } |
1621 | catch | ||
1622 | { | ||
1623 | m_log.Debug("PrimitiveBaseShape] error decoding MOAP xml" ); | ||
1624 | } | ||
1612 | } | 1625 | } |
1613 | 1626 | ||
1614 | public void ReadXml(XmlReader reader) | 1627 | public void ReadXml(XmlReader reader) |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs index e1b9e08..6f5775a 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs | |||
@@ -1577,7 +1577,10 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1577 | break; | 1577 | break; |
1578 | 1578 | ||
1579 | m_Scene.TryGetScenePresence(m_AgentID, out sp); | 1579 | m_Scene.TryGetScenePresence(m_AgentID, out sp); |
1580 | if(sp == null || sp.IsChildAgent || sp.IsDeleted || sp.IsInTransit) | 1580 | if(sp == null || sp.IsChildAgent || sp.IsDeleted) |
1581 | break; | ||
1582 | |||
1583 | if(sp.IsInTransit && !sp.IsInLocalTransit) | ||
1581 | break; | 1584 | break; |
1582 | 1585 | ||
1583 | client = sp.ControllingClient; | 1586 | client = sp.ControllingClient; |
@@ -1699,7 +1702,10 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1699 | break; | 1702 | break; |
1700 | 1703 | ||
1701 | m_Scene.TryGetScenePresence(m_AgentID, out sp); | 1704 | m_Scene.TryGetScenePresence(m_AgentID, out sp); |
1702 | if(sp == null || sp.IsChildAgent || sp.IsDeleted || sp.IsInTransit) | 1705 | if(sp == null || sp.IsChildAgent || sp.IsDeleted) |
1706 | break; | ||
1707 | |||
1708 | if(sp.IsInTransit && !sp.IsInLocalTransit) | ||
1703 | break; | 1709 | break; |
1704 | 1710 | ||
1705 | client = sp.ControllingClient; | 1711 | client = sp.ControllingClient; |
@@ -1807,7 +1813,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1807 | if(sp == null || sp.IsDeleted) | 1813 | if(sp == null || sp.IsDeleted) |
1808 | return ""; | 1814 | return ""; |
1809 | 1815 | ||
1810 | if(sp.IsInTransit) | 1816 | if(sp.IsInTransit && !sp.IsInLocalTransit) |
1811 | { | 1817 | { |
1812 | httpResponse.StatusCode = (int)System.Net.HttpStatusCode.ServiceUnavailable; | 1818 | httpResponse.StatusCode = (int)System.Net.HttpStatusCode.ServiceUnavailable; |
1813 | httpResponse.AddHeader("Retry-After","30"); | 1819 | httpResponse.AddHeader("Retry-After","30"); |
@@ -1817,7 +1823,6 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1817 | NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query); | 1823 | NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query); |
1818 | string[] ids = query.GetValues("ids"); | 1824 | string[] ids = query.GetValues("ids"); |
1819 | 1825 | ||
1820 | |||
1821 | Dictionary<UUID,string> names = m_UserManager.GetUsersNames(ids); | 1826 | Dictionary<UUID,string> names = m_UserManager.GetUsersNames(ids); |
1822 | 1827 | ||
1823 | OSDMap osdReply = new OSDMap(); | 1828 | OSDMap osdReply = new OSDMap(); |
@@ -1833,12 +1838,18 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1833 | 1838 | ||
1834 | string[] parts = kvp.Value.Split(new char[] {' '}); | 1839 | string[] parts = kvp.Value.Split(new char[] {' '}); |
1835 | OSDMap osdname = new OSDMap(); | 1840 | OSDMap osdname = new OSDMap(); |
1841 | |||
1842 | // dont tell about unknown users, we can't send them back on Bad either | ||
1843 | if(parts[0] == "Unknown") | ||
1844 | continue; | ||
1845 | /* | ||
1836 | if(parts[0] == "Unknown") | 1846 | if(parts[0] == "Unknown") |
1837 | { | 1847 | { |
1838 | osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddHours(1)); | 1848 | osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddHours(1)); |
1839 | osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddHours(2)); | 1849 | osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddHours(2)); |
1840 | } | 1850 | } |
1841 | else | 1851 | else |
1852 | */ | ||
1842 | { | 1853 | { |
1843 | osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddDays(8)); | 1854 | osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddDays(8)); |
1844 | osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddMonths(1)); | 1855 | osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddMonths(1)); |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index f658a70..1091078 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -6473,8 +6473,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6473 | 6473 | ||
6474 | private bool HandleUUIDGroupNameRequest(IClientAPI sender, Packet Pack) | 6474 | private bool HandleUUIDGroupNameRequest(IClientAPI sender, Packet Pack) |
6475 | { | 6475 | { |
6476 | UUIDGroupNameRequestPacket upack = (UUIDGroupNameRequestPacket)Pack; | 6476 | ScenePresence sp = (ScenePresence)SceneAgent; |
6477 | if(sp == null || sp.IsDeleted || (sp.IsInTransit && !sp.IsInLocalTransit)) | ||
6478 | return true; | ||
6477 | 6479 | ||
6480 | UUIDGroupNameRequestPacket upack = (UUIDGroupNameRequestPacket)Pack; | ||
6478 | 6481 | ||
6479 | for (int i = 0; i < upack.UUIDNameBlock.Length; i++) | 6482 | for (int i = 0; i < upack.UUIDNameBlock.Length; i++) |
6480 | { | 6483 | { |
@@ -7493,7 +7496,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7493 | SendUserInfoReply(false, true, ""); | 7496 | SendUserInfoReply(false, true, ""); |
7494 | } | 7497 | } |
7495 | return true; | 7498 | return true; |
7496 | |||
7497 | } | 7499 | } |
7498 | 7500 | ||
7499 | private bool HandleUpdateUserInfo(IClientAPI sender, Packet Pack) | 7501 | private bool HandleUpdateUserInfo(IClientAPI sender, Packet Pack) |
@@ -9648,6 +9650,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9648 | 9650 | ||
9649 | private bool HandleUUIDNameRequest(IClientAPI sender, Packet Pack) | 9651 | private bool HandleUUIDNameRequest(IClientAPI sender, Packet Pack) |
9650 | { | 9652 | { |
9653 | ScenePresence sp = (ScenePresence)SceneAgent; | ||
9654 | if(sp == null || sp.IsDeleted || (sp.IsInTransit && !sp.IsInLocalTransit)) | ||
9655 | return true; | ||
9656 | |||
9651 | UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack; | 9657 | UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack; |
9652 | 9658 | ||
9653 | foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock) | 9659 | foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock) |
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index e5ac17d..f2fc070 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs | |||
@@ -1168,7 +1168,7 @@ namespace OpenSim.Region.CoreModules.Asset | |||
1168 | 1168 | ||
1169 | con.Output("FloatSam Ensuring assets are cached for all scenes."); | 1169 | con.Output("FloatSam Ensuring assets are cached for all scenes."); |
1170 | 1170 | ||
1171 | WorkManager.RunInThread(delegate | 1171 | WorkManager.RunInThreadPool(delegate |
1172 | { | 1172 | { |
1173 | bool wasRunning= false; | 1173 | bool wasRunning= false; |
1174 | lock(timerLock) | 1174 | lock(timerLock) |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 99bebdd..c93c54d 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -771,8 +771,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
771 | else if (sp.Flying) | 771 | else if (sp.Flying) |
772 | teleportFlags |= (uint)TeleportFlags.IsFlying; | 772 | teleportFlags |= (uint)TeleportFlags.IsFlying; |
773 | 773 | ||
774 | sp.IsInLocalTransit = finalDestination.RegionLocY != 0; // HG | ||
774 | sp.IsInTransit = true; | 775 | sp.IsInTransit = true; |
775 | 776 | ||
777 | |||
776 | if (DisableInterRegionTeleportCancellation) | 778 | if (DisableInterRegionTeleportCancellation) |
777 | teleportFlags |= (uint)TeleportFlags.DisableCancel; | 779 | teleportFlags |= (uint)TeleportFlags.DisableCancel; |
778 | 780 | ||
@@ -1524,6 +1526,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1524 | 1526 | ||
1525 | public bool Cross(ScenePresence agent, bool isFlying) | 1527 | public bool Cross(ScenePresence agent, bool isFlying) |
1526 | { | 1528 | { |
1529 | agent.IsInLocalTransit = true; | ||
1527 | agent.IsInTransit = true; | 1530 | agent.IsInTransit = true; |
1528 | CrossAsyncDelegate d = CrossAsync; | 1531 | CrossAsyncDelegate d = CrossAsync; |
1529 | d.BeginInvoke(agent, isFlying, CrossCompleted, d); | 1532 | d.BeginInvoke(agent, isFlying, CrossCompleted, d); |
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs index 32cb5a3..2695464 100644 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs | |||
@@ -175,6 +175,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement | |||
175 | { | 175 | { |
176 | client.OnNameFromUUIDRequest -= new UUIDNameRequest(HandleUUIDNameRequest); | 176 | client.OnNameFromUUIDRequest -= new UUIDNameRequest(HandleUUIDNameRequest); |
177 | client.OnAvatarPickerRequest -= new AvatarPickerRequest(HandleAvatarPickerRequest); | 177 | client.OnAvatarPickerRequest -= new AvatarPickerRequest(HandleAvatarPickerRequest); |
178 | client.OnConnectionClosed -= new Action<IClientAPI>(HandleConnectionClosed); | ||
178 | } | 179 | } |
179 | 180 | ||
180 | protected virtual void HandleUUIDNameRequest(UUID uuid, IClientAPI client) | 181 | protected virtual void HandleUUIDNameRequest(UUID uuid, IClientAPI client) |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index e1e06d0..ebef158 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -394,6 +394,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
394 | /// asynchronously from the update loop. | 394 | /// asynchronously from the update loop. |
395 | /// </summary> | 395 | /// </summary> |
396 | private bool m_cleaningTemps = false; | 396 | private bool m_cleaningTemps = false; |
397 | private bool m_sendingCoarseLocations = false; // same for async course locations sending | ||
397 | 398 | ||
398 | /// <summary> | 399 | /// <summary> |
399 | /// Used to control main scene thread looping time when not updating via timer. | 400 | /// Used to control main scene thread looping time when not updating via timer. |
@@ -1654,18 +1655,24 @@ namespace OpenSim.Region.Framework.Scenes | |||
1654 | if (Frame % m_update_entitymovement == 0) | 1655 | if (Frame % m_update_entitymovement == 0) |
1655 | m_sceneGraph.UpdateScenePresenceMovement(); | 1656 | m_sceneGraph.UpdateScenePresenceMovement(); |
1656 | 1657 | ||
1657 | if (Frame % (m_update_coarse_locations) == 0) | 1658 | if (Frame % (m_update_coarse_locations) == 0 && !m_sendingCoarseLocations) |
1658 | { | 1659 | { |
1659 | List<Vector3> coarseLocations; | 1660 | m_sendingCoarseLocations = true; |
1660 | List<UUID> avatarUUIDs; | 1661 | WorkManager.RunInThreadPool( |
1661 | 1662 | delegate | |
1662 | SceneGraph.GetCoarseLocations(out coarseLocations, out avatarUUIDs, 60); | 1663 | { |
1663 | // Send coarse locations to clients | 1664 | List<Vector3> coarseLocations; |
1664 | ForEachScenePresence(delegate(ScenePresence presence) | 1665 | List<UUID> avatarUUIDs; |
1665 | { | 1666 | SceneGraph.GetCoarseLocations(out coarseLocations, out avatarUUIDs, 60); |
1666 | presence.SendCoarseLocations(coarseLocations, avatarUUIDs); | 1667 | // Send coarse locations to clients |
1667 | }); | 1668 | ForEachScenePresence(delegate(ScenePresence presence) |
1669 | { | ||
1670 | presence.SendCoarseLocations(coarseLocations, avatarUUIDs); | ||
1671 | }); | ||
1672 | m_sendingCoarseLocations = false; | ||
1673 | }, null, string.Format("SendCoarseLocations ({0})", Name)); | ||
1668 | } | 1674 | } |
1675 | |||
1669 | // Get the simulation frame time that the avatar force input | 1676 | // Get the simulation frame time that the avatar force input |
1670 | // took | 1677 | // took |
1671 | tmpMS2 = Util.GetTimeStampMS(); | 1678 | tmpMS2 = Util.GetTimeStampMS(); |
@@ -1708,7 +1715,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1708 | if (Frame % m_update_temp_cleaning == 0 && !m_cleaningTemps) | 1715 | if (Frame % m_update_temp_cleaning == 0 && !m_cleaningTemps) |
1709 | { | 1716 | { |
1710 | m_cleaningTemps = true; | 1717 | m_cleaningTemps = true; |
1711 | WorkManager.RunInThread( | 1718 | WorkManager.RunInThreadPool( |
1712 | delegate { CleanTempObjects(); m_cleaningTemps = false; }, null, string.Format("CleanTempObjects ({0})", Name)); | 1719 | delegate { CleanTempObjects(); m_cleaningTemps = false; }, null, string.Format("CleanTempObjects ({0})", Name)); |
1713 | tmpMS2 = Util.GetTimeStampMS(); | 1720 | tmpMS2 = Util.GetTimeStampMS(); |
1714 | tempOnRezMS = (float)(tmpMS2 - tmpMS); // bad.. counts the FireAndForget, not CleanTempObjects | 1721 | tempOnRezMS = (float)(tmpMS2 - tmpMS); // bad.. counts the FireAndForget, not CleanTempObjects |
@@ -1936,7 +1943,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1936 | if (!m_backingup) | 1943 | if (!m_backingup) |
1937 | { | 1944 | { |
1938 | m_backingup = true; | 1945 | m_backingup = true; |
1939 | WorkManager.RunInThread(o => Backup(false), null, string.Format("BackupWorker ({0})", Name)); | 1946 | WorkManager.RunInThreadPool(o => Backup(false), null, string.Format("BackupWorker ({0})", Name)); |
1940 | } | 1947 | } |
1941 | } | 1948 | } |
1942 | 1949 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 93c9b42..1695d9b 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -807,6 +807,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
807 | foreach (avtocrossInfo avinfo in avsToCross) | 807 | foreach (avtocrossInfo avinfo in avsToCross) |
808 | { | 808 | { |
809 | ScenePresence av = avinfo.av; | 809 | ScenePresence av = avinfo.av; |
810 | av.IsInLocalTransit = true; | ||
810 | av.IsInTransit = true; | 811 | av.IsInTransit = true; |
811 | m_log.DebugFormat("[SCENE OBJECT]: Crossing avatar {0} to {1}", av.Name, val); | 812 | m_log.DebugFormat("[SCENE OBJECT]: Crossing avatar {0} to {1}", av.Name, val); |
812 | 813 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 60efc04..d8f2b80 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -91,7 +91,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
91 | /// </value> | 91 | /// </value> |
92 | protected internal TaskInventoryDictionary Items | 92 | protected internal TaskInventoryDictionary Items |
93 | { | 93 | { |
94 | get { | 94 | get |
95 | { | ||
95 | return m_items; | 96 | return m_items; |
96 | } | 97 | } |
97 | set | 98 | set |
@@ -141,45 +142,53 @@ namespace OpenSim.Region.Framework.Scenes | |||
141 | /// </remarks> | 142 | /// </remarks> |
142 | public void ResetInventoryIDs() | 143 | public void ResetInventoryIDs() |
143 | { | 144 | { |
144 | if (null == m_part) | 145 | if (m_part == null) |
145 | m_items.LockItemsForWrite(true); | 146 | return; |
146 | 147 | ||
147 | if (Items.Count == 0) | 148 | m_items.LockItemsForWrite(true); |
149 | if (m_items.Count == 0) | ||
148 | { | 150 | { |
149 | m_items.LockItemsForWrite(false); | 151 | m_items.LockItemsForWrite(false); |
150 | return; | 152 | return; |
151 | } | 153 | } |
152 | 154 | ||
153 | IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values); | 155 | UUID partID = m_part.UUID; |
154 | Items.Clear(); | 156 | IList<TaskInventoryItem> items = new List<TaskInventoryItem>(m_items.Values); |
157 | m_items.Clear(); | ||
155 | 158 | ||
156 | foreach (TaskInventoryItem item in items) | 159 | foreach (TaskInventoryItem item in items) |
157 | { | 160 | { |
158 | item.ResetIDs(m_part.UUID); | 161 | item.ResetIDs(partID); |
159 | Items.Add(item.ItemID, item); | 162 | m_items.Add(item.ItemID, item); |
160 | } | 163 | } |
164 | m_inventorySerial++; | ||
161 | m_items.LockItemsForWrite(false); | 165 | m_items.LockItemsForWrite(false); |
162 | } | 166 | } |
163 | 167 | ||
164 | public void ResetObjectID() | 168 | public void ResetObjectID() |
165 | { | 169 | { |
170 | if (m_part == null) | ||
171 | return; | ||
172 | |||
166 | m_items.LockItemsForWrite(true); | 173 | m_items.LockItemsForWrite(true); |
167 | 174 | ||
168 | if (Items.Count == 0) | 175 | if (m_items.Count == 0) |
169 | { | 176 | { |
170 | m_items.LockItemsForWrite(false); | 177 | m_items.LockItemsForWrite(false); |
171 | return; | 178 | return; |
172 | } | 179 | } |
173 | 180 | ||
174 | IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values); | 181 | IList<TaskInventoryItem> items = new List<TaskInventoryItem>(m_items.Values); |
175 | Items.Clear(); | 182 | m_items.Clear(); |
176 | 183 | ||
184 | UUID partID = m_part.UUID; | ||
177 | foreach (TaskInventoryItem item in items) | 185 | foreach (TaskInventoryItem item in items) |
178 | { | 186 | { |
179 | item.ParentPartID = m_part.UUID; | 187 | item.ParentPartID = partID; |
180 | item.ParentID = m_part.UUID; | 188 | item.ParentID = partID; |
181 | Items.Add(item.ItemID, item); | 189 | m_items.Add(item.ItemID, item); |
182 | } | 190 | } |
191 | m_inventorySerial++; | ||
183 | m_items.LockItemsForWrite(false); | 192 | m_items.LockItemsForWrite(false); |
184 | } | 193 | } |
185 | 194 | ||
@@ -189,15 +198,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
189 | /// <param name="ownerId"></param> | 198 | /// <param name="ownerId"></param> |
190 | public void ChangeInventoryOwner(UUID ownerId) | 199 | public void ChangeInventoryOwner(UUID ownerId) |
191 | { | 200 | { |
192 | List<TaskInventoryItem> items = GetInventoryItems(); | 201 | if(m_part == null) |
193 | |||
194 | if (items.Count == 0) | ||
195 | return; | 202 | return; |
196 | 203 | ||
197 | m_items.LockItemsForWrite(true); | 204 | m_items.LockItemsForWrite(true); |
198 | HasInventoryChanged = true; | 205 | if (m_items.Count == 0) |
199 | m_part.ParentGroup.HasGroupChanged = true; | 206 | { |
200 | foreach (TaskInventoryItem item in items) | 207 | m_items.LockItemsForWrite(false); |
208 | return; | ||
209 | } | ||
210 | |||
211 | foreach (TaskInventoryItem item in m_items.Values) | ||
201 | { | 212 | { |
202 | if (ownerId != item.OwnerID) | 213 | if (ownerId != item.OwnerID) |
203 | item.LastOwnerID = item.OwnerID; | 214 | item.LastOwnerID = item.OwnerID; |
@@ -207,6 +218,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
207 | item.PermsGranter = UUID.Zero; | 218 | item.PermsGranter = UUID.Zero; |
208 | item.OwnerChanged = true; | 219 | item.OwnerChanged = true; |
209 | } | 220 | } |
221 | HasInventoryChanged = true; | ||
222 | m_part.ParentGroup.HasGroupChanged = true; | ||
210 | m_inventorySerial++; | 223 | m_inventorySerial++; |
211 | m_items.LockItemsForWrite(false); | 224 | m_items.LockItemsForWrite(false); |
212 | } | 225 | } |
@@ -217,8 +230,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
217 | /// <param name="groupID"></param> | 230 | /// <param name="groupID"></param> |
218 | public void ChangeInventoryGroup(UUID groupID) | 231 | public void ChangeInventoryGroup(UUID groupID) |
219 | { | 232 | { |
233 | if(m_part == null) | ||
234 | return; | ||
235 | |||
220 | m_items.LockItemsForWrite(true); | 236 | m_items.LockItemsForWrite(true); |
221 | if (0 == Items.Count) | 237 | if (m_items.Count == 0) |
222 | { | 238 | { |
223 | m_items.LockItemsForWrite(false); | 239 | m_items.LockItemsForWrite(false); |
224 | return; | 240 | return; |
@@ -233,11 +249,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
233 | m_part.ParentGroup.HasGroupChanged = true; | 249 | m_part.ParentGroup.HasGroupChanged = true; |
234 | } | 250 | } |
235 | 251 | ||
236 | IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values); | 252 | foreach (TaskInventoryItem item in m_items.Values) |
237 | foreach (TaskInventoryItem item in items) | ||
238 | { | ||
239 | item.GroupID = groupID; | 253 | item.GroupID = groupID; |
240 | } | 254 | |
241 | m_items.LockItemsForWrite(false); | 255 | m_items.LockItemsForWrite(false); |
242 | } | 256 | } |
243 | 257 | ||
@@ -246,8 +260,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
246 | if (m_part == null || m_part.ParentGroup == null || m_part.ParentGroup.Scene == null) | 260 | if (m_part == null || m_part.ParentGroup == null || m_part.ParentGroup.Scene == null) |
247 | return; | 261 | return; |
248 | 262 | ||
249 | Items.LockItemsForRead(true); | 263 | m_items.LockItemsForRead(true); |
250 | foreach (TaskInventoryItem item in Items.Values) | 264 | foreach (TaskInventoryItem item in m_items.Values) |
251 | { | 265 | { |
252 | if (item.InvType == (int)InventoryType.LSL) | 266 | if (item.InvType == (int)InventoryType.LSL) |
253 | { | 267 | { |
@@ -257,7 +271,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
257 | } | 271 | } |
258 | } | 272 | } |
259 | 273 | ||
260 | Items.LockItemsForRead(false); | 274 | m_items.LockItemsForRead(false); |
261 | } | 275 | } |
262 | 276 | ||
263 | public bool TryGetScriptInstanceRunning(UUID itemId, out bool running) | 277 | public bool TryGetScriptInstanceRunning(UUID itemId, out bool running) |
@@ -345,7 +359,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
345 | /// </summary> | 359 | /// </summary> |
346 | public void StopScriptInstances() | 360 | public void StopScriptInstances() |
347 | { | 361 | { |
348 | GetInventoryItems(InventoryType.LSL).ForEach(i => StopScriptInstance(i)); | 362 | List<TaskInventoryItem> scripts = GetInventoryItems(InventoryType.LSL); |
363 | foreach (TaskInventoryItem item in scripts) | ||
364 | StopScriptInstance(item); | ||
349 | } | 365 | } |
350 | 366 | ||
351 | /// <summary> | 367 | /// <summary> |
@@ -807,7 +823,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
807 | 823 | ||
808 | m_part.AggregateInnerPerms(); | 824 | m_part.AggregateInnerPerms(); |
809 | m_inventorySerial++; | 825 | m_inventorySerial++; |
810 | //m_inventorySerial += 2; | ||
811 | HasInventoryChanged = true; | 826 | HasInventoryChanged = true; |
812 | m_part.ParentGroup.HasGroupChanged = true; | 827 | m_part.ParentGroup.HasGroupChanged = true; |
813 | } | 828 | } |
@@ -1126,18 +1141,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
1126 | { | 1141 | { |
1127 | bool changed = false; | 1142 | bool changed = false; |
1128 | 1143 | ||
1129 | Items.LockItemsForRead(true); | 1144 | m_items.LockItemsForRead(true); |
1130 | 1145 | ||
1131 | if (m_inventorySerial == 0) // No inventory | 1146 | if (m_inventorySerial == 0) // No inventory |
1132 | { | 1147 | { |
1133 | Items.LockItemsForRead(false); | 1148 | m_items.LockItemsForRead(false); |
1134 | client.SendTaskInventory(m_part.UUID, 0, new byte[0]); | 1149 | client.SendTaskInventory(m_part.UUID, 0, new byte[0]); |
1135 | return; | 1150 | return; |
1136 | } | 1151 | } |
1137 | 1152 | ||
1138 | if (m_items.Count == 0) // No inventory | 1153 | if (m_items.Count == 0) // No inventory |
1139 | { | 1154 | { |
1140 | Items.LockItemsForRead(false); | 1155 | m_items.LockItemsForRead(false); |
1141 | client.SendTaskInventory(m_part.UUID, 0, new byte[0]); | 1156 | client.SendTaskInventory(m_part.UUID, 0, new byte[0]); |
1142 | return; | 1157 | return; |
1143 | } | 1158 | } |
@@ -1148,7 +1163,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1148 | changed = true; | 1163 | changed = true; |
1149 | } | 1164 | } |
1150 | 1165 | ||
1151 | Items.LockItemsForRead(false); | 1166 | m_items.LockItemsForRead(false); |
1152 | 1167 | ||
1153 | if (m_inventoryFileData.Length < 2) | 1168 | if (m_inventoryFileData.Length < 2) |
1154 | changed = true; | 1169 | changed = true; |
@@ -1173,7 +1188,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1173 | 1188 | ||
1174 | InventoryStringBuilder invString = new InventoryStringBuilder(m_part.UUID, UUID.Zero); | 1189 | InventoryStringBuilder invString = new InventoryStringBuilder(m_part.UUID, UUID.Zero); |
1175 | 1190 | ||
1176 | Items.LockItemsForRead(true); | 1191 | m_items.LockItemsForRead(true); |
1177 | 1192 | ||
1178 | foreach (TaskInventoryItem item in m_items.Values) | 1193 | foreach (TaskInventoryItem item in m_items.Values) |
1179 | { | 1194 | { |
@@ -1234,7 +1249,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1234 | invString.AddSectionEnd(); | 1249 | invString.AddSectionEnd(); |
1235 | } | 1250 | } |
1236 | 1251 | ||
1237 | Items.LockItemsForRead(false); | 1252 | m_items.LockItemsForRead(false); |
1238 | 1253 | ||
1239 | m_inventoryFileData = Utils.StringToBytes(invString.GetString()); | 1254 | m_inventoryFileData = Utils.StringToBytes(invString.GetString()); |
1240 | 1255 | ||
@@ -1264,10 +1279,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1264 | // of prim inventory loss. | 1279 | // of prim inventory loss. |
1265 | // if (HasInventoryChanged) | 1280 | // if (HasInventoryChanged) |
1266 | // { | 1281 | // { |
1267 | Items.LockItemsForRead(true); | 1282 | m_items.LockItemsForRead(true); |
1268 | ICollection<TaskInventoryItem> itemsvalues = Items.Values; | 1283 | ICollection<TaskInventoryItem> itemsvalues = m_items.Values; |
1269 | HasInventoryChanged = false; | 1284 | HasInventoryChanged = false; |
1270 | Items.LockItemsForRead(false); | 1285 | m_items.LockItemsForRead(false); |
1271 | try | 1286 | try |
1272 | { | 1287 | { |
1273 | datastore.StorePrimInventory(m_part.UUID, itemsvalues); | 1288 | datastore.StorePrimInventory(m_part.UUID, itemsvalues); |
@@ -1434,15 +1449,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
1434 | public int ScriptCount() | 1449 | public int ScriptCount() |
1435 | { | 1450 | { |
1436 | int count = 0; | 1451 | int count = 0; |
1437 | Items.LockItemsForRead(true); | 1452 | m_items.LockItemsForRead(true); |
1438 | foreach (TaskInventoryItem item in m_items.Values) | 1453 | foreach (TaskInventoryItem item in m_items.Values) |
1439 | { | 1454 | { |
1440 | if (item.InvType == (int)InventoryType.LSL) | 1455 | if (item.InvType == (int)InventoryType.LSL) |
1441 | { | ||
1442 | count++; | 1456 | count++; |
1443 | } | 1457 | } |
1444 | } | 1458 | m_items.LockItemsForRead(false); |
1445 | Items.LockItemsForRead(false); | ||
1446 | return count; | 1459 | return count; |
1447 | } | 1460 | } |
1448 | /// <summary> | 1461 | /// <summary> |
@@ -1465,48 +1478,44 @@ namespace OpenSim.Region.Framework.Scenes | |||
1465 | if (engine != null) | 1478 | if (engine != null) |
1466 | { | 1479 | { |
1467 | if (engine.GetScriptState(item.ItemID)) | 1480 | if (engine.GetScriptState(item.ItemID)) |
1468 | { | ||
1469 | count++; | 1481 | count++; |
1470 | } | 1482 | } |
1471 | } | 1483 | } |
1472 | } | 1484 | } |
1473 | } | ||
1474 | return count; | 1485 | return count; |
1475 | } | 1486 | } |
1476 | 1487 | ||
1477 | public List<UUID> GetInventoryList() | 1488 | public List<UUID> GetInventoryList() |
1478 | { | 1489 | { |
1479 | List<UUID> ret = new List<UUID>(); | 1490 | m_items.LockItemsForRead(true); |
1480 | 1491 | ||
1492 | List<UUID> ret = new List<UUID>(m_items.Count); | ||
1481 | foreach (TaskInventoryItem item in m_items.Values) | 1493 | foreach (TaskInventoryItem item in m_items.Values) |
1482 | ret.Add(item.ItemID); | 1494 | ret.Add(item.ItemID); |
1483 | 1495 | ||
1496 | m_items.LockItemsForRead(false); | ||
1484 | return ret; | 1497 | return ret; |
1485 | } | 1498 | } |
1486 | 1499 | ||
1487 | public List<TaskInventoryItem> GetInventoryItems() | 1500 | public List<TaskInventoryItem> GetInventoryItems() |
1488 | { | 1501 | { |
1489 | List<TaskInventoryItem> ret = new List<TaskInventoryItem>(); | 1502 | m_items.LockItemsForRead(true); |
1490 | 1503 | List<TaskInventoryItem> ret = new List<TaskInventoryItem>(m_items.Values); | |
1491 | Items.LockItemsForRead(true); | 1504 | m_items.LockItemsForRead(false); |
1492 | ret = new List<TaskInventoryItem>(m_items.Values); | ||
1493 | Items.LockItemsForRead(false); | ||
1494 | 1505 | ||
1495 | return ret; | 1506 | return ret; |
1496 | } | 1507 | } |
1497 | 1508 | ||
1498 | public List<TaskInventoryItem> GetInventoryItems(InventoryType type) | 1509 | public List<TaskInventoryItem> GetInventoryItems(InventoryType type) |
1499 | { | 1510 | { |
1500 | List<TaskInventoryItem> ret = new List<TaskInventoryItem>(); | 1511 | m_items.LockItemsForRead(true); |
1501 | |||
1502 | Items.LockItemsForRead(true); | ||
1503 | 1512 | ||
1513 | List<TaskInventoryItem> ret = new List<TaskInventoryItem>(m_items.Count); | ||
1504 | foreach (TaskInventoryItem item in m_items.Values) | 1514 | foreach (TaskInventoryItem item in m_items.Values) |
1505 | if (item.InvType == (int)type) | 1515 | if (item.InvType == (int)type) |
1506 | ret.Add(item); | 1516 | ret.Add(item); |
1507 | 1517 | ||
1508 | Items.LockItemsForRead(false); | 1518 | m_items.LockItemsForRead(false); |
1509 | |||
1510 | return ret; | 1519 | return ret; |
1511 | } | 1520 | } |
1512 | 1521 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index daa9e50..47af3b8 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -971,6 +971,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
971 | m_inTransit = value; | 971 | m_inTransit = value; |
972 | } | 972 | } |
973 | } | 973 | } |
974 | // this is is only valid if IsInTransit is true | ||
975 | // only false on HG tps | ||
976 | // used work arounf viewers asking source region about destination user | ||
977 | public bool IsInLocalTransit {get; set; } | ||
974 | 978 | ||
975 | 979 | ||
976 | /// <summary> | 980 | /// <summary> |
@@ -1040,6 +1044,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1040 | m_uuid = client.AgentId; | 1044 | m_uuid = client.AgentId; |
1041 | LocalId = m_scene.AllocateLocalId(); | 1045 | LocalId = m_scene.AllocateLocalId(); |
1042 | LegacySitOffsets = m_scene.LegacySitOffsets; | 1046 | LegacySitOffsets = m_scene.LegacySitOffsets; |
1047 | IsInLocalTransit = true; | ||
1043 | 1048 | ||
1044 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, m_uuid); | 1049 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, m_uuid); |
1045 | if (account != null) | 1050 | if (account != null) |
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index b1b1fc5..b012a08 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | |||
@@ -1361,9 +1361,27 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1361 | 1361 | ||
1362 | private static void ProcessShpMedia(PrimitiveBaseShape shp, XmlReader reader) | 1362 | private static void ProcessShpMedia(PrimitiveBaseShape shp, XmlReader reader) |
1363 | { | 1363 | { |
1364 | // Get inner XML and pass to MediaList parser | 1364 | string value = String.Empty; |
1365 | string value = reader.ReadInnerXml(); | 1365 | try |
1366 | shp.Media = PrimitiveBaseShape.MediaList.FromXml(value); | 1366 | { |
1367 | // The STANDARD content of Media elemet is escaped XML string (with > etc). | ||
1368 | value = reader.ReadElementContentAsString("Media", String.Empty); | ||
1369 | shp.Media = PrimitiveBaseShape.MediaList.FromXml(value); | ||
1370 | } | ||
1371 | catch (XmlException e) | ||
1372 | { | ||
1373 | // There are versions of OAR files that contain unquoted XML. | ||
1374 | // ie ONE comercial fork that never wanted their oars to be read by our code | ||
1375 | try | ||
1376 | { | ||
1377 | value = reader.ReadInnerXml(); | ||
1378 | shp.Media = PrimitiveBaseShape.MediaList.FromXml(value); | ||
1379 | } | ||
1380 | catch | ||
1381 | { | ||
1382 | m_log.ErrorFormat("[SERIALIZER] Failed parsing halcyon MOAP information"); | ||
1383 | } | ||
1384 | } | ||
1367 | } | 1385 | } |
1368 | 1386 | ||
1369 | #endregion | 1387 | #endregion |
diff --git a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs index 923e2ff..a5ee2c9 100644 --- a/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs +++ b/OpenSim/Region/PhysicsModules/ubOde/ODEMeshWorker.cs | |||
@@ -936,7 +936,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde | |||
936 | repData.actor.Name, asset.ID.ToString()); | 936 | repData.actor.Name, asset.ID.ToString()); |
937 | } | 937 | } |
938 | else | 938 | else |
939 | m_log.WarnFormat("[PHYSICS]: asset provider returned null asset fo mesh of prim {0}.", | 939 | m_log.WarnFormat("[PHYSICS]: asset provider returned null asset for mesh of prim {0}.", |
940 | repData.actor.Name); | 940 | repData.actor.Name); |
941 | } | 941 | } |
942 | } | 942 | } |
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 3482270..f1dcbd3 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example | |||
@@ -138,7 +138,7 @@ | |||
138 | ;; The XML here has the same format as it does on the filesystem | 138 | ;; The XML here has the same format as it does on the filesystem |
139 | ;; (including the <Root> tag), except that everything is also enclosed | 139 | ;; (including the <Root> tag), except that everything is also enclosed |
140 | ;; in a <Regions> tag. | 140 | ;; in a <Regions> tag. |
141 | ; regionload_webserver_url = "http://example.com/regions.xml"; | 141 | ; regionload_webserver_url = "http://example.com/regions.xml" |
142 | 142 | ||
143 | ;# {allow_regionless} {} {Allow simulator to start up with no regions configured.} {true false} false | 143 | ;# {allow_regionless} {} {Allow simulator to start up with no regions configured.} {true false} false |
144 | ;; Allow the simulator to start up if there are no region configuration available | 144 | ;; Allow the simulator to start up if there are no region configuration available |
@@ -286,8 +286,8 @@ | |||
286 | ;; SpawnPointRouting adjusts the landing for incoming avatars. | 286 | ;; SpawnPointRouting adjusts the landing for incoming avatars. |
287 | ;; "closest" will place the avatar at the SpawnPoint located in the closest | 287 | ;; "closest" will place the avatar at the SpawnPoint located in the closest |
288 | ;; available spot to the destination (typically map click/landmark). | 288 | ;; available spot to the destination (typically map click/landmark). |
289 | ;; "random" will place the avatar on a randomly selected spawnpoint; | 289 | ;; "random" will place the avatar on a randomly selected spawnpoint. |
290 | ;; "sequence" will place the avatar on the next sequential SpawnPoint | 290 | ;; "sequence" will place the avatar on the next sequential SpawnPoint. |
291 | ; SpawnPointRouting = closest | 291 | ; SpawnPointRouting = closest |
292 | 292 | ||
293 | ;# {TelehubAllowLandmark} {} {Allow users with landmarks to override telehub routing} {true false} false | 293 | ;# {TelehubAllowLandmark} {} {Allow users with landmarks to override telehub routing} {true false} false |
@@ -375,8 +375,8 @@ | |||
375 | ; TexturePrimSize = 48 | 375 | ; TexturePrimSize = 48 |
376 | 376 | ||
377 | ;# {RenderMeshes} {} {Render meshes and sculpties on map tiles?} {true false} false | 377 | ;# {RenderMeshes} {} {Render meshes and sculpties on map tiles?} {true false} false |
378 | ;; Attempt to render meshes and sculpties on the map | 378 | ;; Attempt to render meshes and sculpties on the map. |
379 | ; RenderMeshes = false; | 379 | ; RenderMeshes = false |
380 | 380 | ||
381 | 381 | ||
382 | [Permissions] | 382 | [Permissions] |
@@ -585,7 +585,7 @@ | |||
585 | ;; web server | 585 | ;; web server |
586 | ; user_agent = "OpenSim LSL (Mozilla Compatible)" | 586 | ; user_agent = "OpenSim LSL (Mozilla Compatible)" |
587 | 587 | ||
588 | ;; The follow 3 variables are for HTTP Basic Authentication for the Robust services. | 588 | ;; The following 3 variables are for HTTP Basic Authentication for the Robust services. |
589 | ;; Use this if your central services in port 8003 need to be accessible on the Internet | 589 | ;; Use this if your central services in port 8003 need to be accessible on the Internet |
590 | ;; but you want to protect them from unauthorized access. The username and password | 590 | ;; but you want to protect them from unauthorized access. The username and password |
591 | ;; here need to match the ones in the Robust service configuration. | 591 | ;; here need to match the ones in the Robust service configuration. |
@@ -650,7 +650,6 @@ | |||
650 | 650 | ||
651 | 651 | ||
652 | [SimulatorFeatures] | 652 | [SimulatorFeatures] |
653 | |||
654 | ;# {SearchServerURI} {} {URL of the search server} {} | 653 | ;# {SearchServerURI} {} {URL of the search server} {} |
655 | ;; Optional. If given this serves the same purpose as the grid wide | 654 | ;; Optional. If given this serves the same purpose as the grid wide |
656 | ;; [LoginServices] SearchURL setting and will override that where | 655 | ;; [LoginServices] SearchURL setting and will override that where |
@@ -707,7 +706,7 @@ | |||
707 | ;; For standalones, this is the storage dll. | 706 | ;; For standalones, this is the storage dll. |
708 | ; StorageProvider = OpenSim.Data.MySQL.dll | 707 | ; StorageProvider = OpenSim.Data.MySQL.dll |
709 | 708 | ||
710 | ;# {MuteListModule} {OfflineMessageModule:OfflineMessageModule} {} {} MuteListModule | 709 | ;# {MuteListModule} {OfflineMessageModule:OfflineMessageModule} {} {} None |
711 | ;; Mute list handler (not yet implemented). MUST BE SET to allow offline | 710 | ;; Mute list handler (not yet implemented). MUST BE SET to allow offline |
712 | ;; messages to work | 711 | ;; messages to work |
713 | ; MuteListModule = MuteListModule | 712 | ; MuteListModule = MuteListModule |
@@ -1163,7 +1162,7 @@ | |||
1163 | [MediaOnAPrim] | 1162 | [MediaOnAPrim] |
1164 | ;# {Enabled} {} {Enable Media-on-a-Prim (MOAP)} {true false} true | 1163 | ;# {Enabled} {} {Enable Media-on-a-Prim (MOAP)} {true false} true |
1165 | ;; Enable media on a prim facilities | 1164 | ;; Enable media on a prim facilities |
1166 | ; Enabled = true; | 1165 | ; Enabled = true |
1167 | 1166 | ||
1168 | 1167 | ||
1169 | [NPC] | 1168 | [NPC] |