Merge branch 'master' of /home/opensim/var/repo/opensim

integration
BlueWall 2012-06-04 22:04:57 -04:00
commit b699752fa9
3 changed files with 41 additions and 16 deletions

View File

@ -155,7 +155,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private int m_defaultRTO = 0; private int m_defaultRTO = 0;
private int m_maxRTO = 0; private int m_maxRTO = 0;
private int m_ackTimeout = 0;
private int m_pausedAckTimeout = 0;
private bool m_disableFacelights = false; private bool m_disableFacelights = false;
public Socket Server { get { return null; } } public Socket Server { get { return null; } }
@ -198,11 +199,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_defaultRTO = config.GetInt("DefaultRTO", 0); m_defaultRTO = config.GetInt("DefaultRTO", 0);
m_maxRTO = config.GetInt("MaxRTO", 0); m_maxRTO = config.GetInt("MaxRTO", 0);
m_disableFacelights = config.GetBoolean("DisableFacelights", false); m_disableFacelights = config.GetBoolean("DisableFacelights", false);
m_ackTimeout = 1000 * config.GetInt("AckTimeout", 60);
m_pausedAckTimeout = 1000 * config.GetInt("PausedAckTimeout", 300);
} }
else else
{ {
PrimUpdatesPerCallback = 100; PrimUpdatesPerCallback = 100;
TextureSendLimit = 20; TextureSendLimit = 20;
m_ackTimeout = 1000 * 60; // 1 minute
m_pausedAckTimeout = 1000 * 300; // 5 minutes
} }
#region BinaryStats #region BinaryStats
@ -491,8 +496,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return; return;
// Disconnect an agent if no packets are received for some time // Disconnect an agent if no packets are received for some time
//FIXME: Make 60 an .ini setting int timeoutTicks = m_ackTimeout;
if ((Environment.TickCount & Int32.MaxValue) - udpClient.TickLastPacketReceived > 1000 * 60)
// Allow more slack if the client is "paused" eg file upload dialogue is open
// Some sort of limit is needed in case the client crashes, loses its network connection
// or some other disaster prevents it from sendung the AgentResume
if (udpClient.IsPaused)
timeoutTicks = m_pausedAckTimeout;
if ((Environment.TickCount & Int32.MaxValue) - udpClient.TickLastPacketReceived > timeoutTicks)
{ {
m_log.Warn("[LLUDPSERVER]: Ack timeout, disconnecting " + udpClient.AgentID); m_log.Warn("[LLUDPSERVER]: Ack timeout, disconnecting " + udpClient.AgentID);
StatsManager.SimExtraStats.AddAbnormalClientThreadTermination(); StatsManager.SimExtraStats.AddAbnormalClientThreadTermination();

View File

@ -61,7 +61,7 @@ namespace OpenSim.Region.RegionCombinerModule
/// <summary> /// <summary>
/// Is this module enabled? /// Is this module enabled?
/// </summary> /// </summary>
private bool enabledYN = false; private bool m_combineContiguousRegions = false;
/// <summary> /// <summary>
/// This holds the root regions for the megaregions. /// This holds the root regions for the megaregions.
@ -79,14 +79,12 @@ namespace OpenSim.Region.RegionCombinerModule
public void Initialise(IConfigSource source) public void Initialise(IConfigSource source)
{ {
IConfig myConfig = source.Configs["Startup"]; IConfig myConfig = source.Configs["Startup"];
enabledYN = myConfig.GetBoolean("CombineContiguousRegions", false); m_combineContiguousRegions = myConfig.GetBoolean("CombineContiguousRegions", false);
if (enabledYN) MainConsole.Instance.Commands.AddCommand(
{ "RegionCombinerModule", false, "fix-phantoms", "fix-phantoms",
MainConsole.Instance.Commands.AddCommand( "Fixes phantom objects after an import to a megaregion or a change from a megaregion back to normal regions",
"RegionCombinerModule", false, "fix-phantoms", "fix-phantoms", FixPhantoms);
"Fixes phantom objects after an import to megaregions", FixPhantoms);
}
} }
public void Close() public void Close()
@ -95,7 +93,7 @@ namespace OpenSim.Region.RegionCombinerModule
public void AddRegion(Scene scene) public void AddRegion(Scene scene)
{ {
if (enabledYN) if (m_combineContiguousRegions)
scene.RegisterModuleInterface<IRegionCombinerModule>(this); scene.RegisterModuleInterface<IRegionCombinerModule>(this);
} }
@ -105,7 +103,10 @@ namespace OpenSim.Region.RegionCombinerModule
public void RegionLoaded(Scene scene) public void RegionLoaded(Scene scene)
{ {
if (enabledYN) lock (m_startingScenes)
m_startingScenes.Add(scene.RegionInfo.originRegionID, scene);
if (m_combineContiguousRegions)
{ {
RegionLoadedDoWork(scene); RegionLoadedDoWork(scene);
@ -208,7 +209,6 @@ namespace OpenSim.Region.RegionCombinerModule
{ {
return; return;
} }
} }
} }
@ -220,8 +220,6 @@ namespace OpenSim.Region.RegionCombinerModule
return; return;
// //
*/ */
lock (m_startingScenes)
m_startingScenes.Add(scene.RegionInfo.originRegionID, scene);
// Give each region a standard set of non-infinite borders // Give each region a standard set of non-infinite borders
Border northBorder = new Border(); Border northBorder = new Border();
@ -1068,6 +1066,8 @@ namespace OpenSim.Region.RegionCombinerModule
foreach (Scene s in scenes) foreach (Scene s in scenes)
{ {
MainConsole.Instance.OutputFormat("Fixing phantoms for {0}", s.RegionInfo.RegionName);
s.ForEachSOG(so => so.AbsolutePosition = so.AbsolutePosition); s.ForEachSOG(so => so.AbsolutePosition = so.AbsolutePosition);
} }
} }

View File

@ -536,6 +536,19 @@
; ;
;DisableFacelights = false ;DisableFacelights = false
; The time to wait before disconecting an unresponsive client.
; The time is in seconds. The default is one minute
;
;AckTimeout = 60
; The time to wait before disconecting an unresponsive paused client.
; A client can be paused when the file selection dialog is open during file upload.
; This gives extra time to find files via the dialog but will still disconnect if
; the client crashes or loses its network connection
; The time is in seconds. The default is five minutes.
;
;PausedAckTimeout = 300
[ClientStack.LindenCaps] [ClientStack.LindenCaps]
;; Long list of capabilities taken from ;; Long list of capabilities taken from
;; http://wiki.secondlife.com/wiki/Current_Sim_Capabilities ;; http://wiki.secondlife.com/wiki/Current_Sim_Capabilities