Merge branch 'master' of /home/opensim/var/repo/opensim
commit
b699752fa9
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue