* Start listening for client connections immediately after a region initializes during initial instance startup. (as opposed to waiting for 'all of the regions' to initialize first)

* Removed hackish timer based client notification about regions up (no longer needed)
* Added a comment about an inventory based login failure that causes me lots of greif testing and debugging.  Comment includes *why* it's failing.
afrisby
Teravus Ovares 2007-12-12 00:38:57 +00:00
parent c7f5a94763
commit 9abe4b2ebf
4 changed files with 34 additions and 15 deletions

View File

@ -338,10 +338,10 @@ namespace OpenSim
} }
// Start UDP servers // Start UDP servers
for (int i = 0; i < m_udpServers.Count; i++) //for (int i = 0; i < m_udpServers.Count; i++)
{ //{
m_udpServers[i].ServerListener(); // m_udpServers[i].ServerListener();
} // }
//Run Startup Commands //Run Startup Commands
if (m_startupCommandsFile != "") if (m_startupCommandsFile != "")
@ -385,6 +385,7 @@ namespace OpenSim
m_udpServers.Add(udpServer); m_udpServers.Add(udpServer);
m_regionData.Add(regionInfo); m_regionData.Add(regionInfo);
udpServer.ServerListener();
return udpServer; return udpServer;
} }
@ -484,7 +485,7 @@ namespace OpenSim
m_regionData.RemoveAt(RegionHandleElement); m_regionData.RemoveAt(RegionHandleElement);
} }
UDPServer restartingRegion = CreateRegion(whichRegion); UDPServer restartingRegion = CreateRegion(whichRegion);
restartingRegion.ServerListener(); //restartingRegion.ServerListener();
//m_sceneManager.SendSimOnlineNotification(restartingRegion.RegionHandle); //m_sceneManager.SendSimOnlineNotification(restartingRegion.RegionHandle);
} }
@ -757,7 +758,7 @@ namespace OpenSim
break; break;
case "create-region": case "create-region":
CreateRegion(new RegionInfo(cmdparams[0], "Regions/" + cmdparams[1])).ServerListener(); CreateRegion(new RegionInfo(cmdparams[0], "Regions/" + cmdparams[1]));
break; break;
case "remove-region": case "remove-region":

View File

@ -65,6 +65,7 @@ namespace OpenSim.Region.Communications.OGS1
{ {
RestObjectPosterResponse<InventoryCollection> requester = new RestObjectPosterResponse<InventoryCollection>(); RestObjectPosterResponse<InventoryCollection> requester = new RestObjectPosterResponse<InventoryCollection>();
requester.ResponseCallback = InventoryResponse; requester.ResponseCallback = InventoryResponse;
// THIS SHOULD BE A Guid, NOT A LLUUID! No longer Serializable! This will fail EVERY TIME.
requester.BeginPostObject<LLUUID>(_inventoryServerUrl + "/GetInventory/", userID); requester.BeginPostObject<LLUUID>(_inventoryServerUrl + "/GetInventory/", userID);
} }
catch (Exception) catch (Exception)

View File

@ -55,7 +55,14 @@ namespace OpenSim.Region.Environment.Modules
byte[] visualParams; byte[] visualParams;
GetDefaultAvatarAppearance(out wearables, out visualParams); GetDefaultAvatarAppearance(out wearables, out visualParams);
appearance = new AvatarAppearance(avatarId, wearables, visualParams); appearance = new AvatarAppearance(avatarId, wearables, visualParams);
try
{
m_avatarsAppearance[avatarId] = appearance; m_avatarsAppearance[avatarId] = appearance;
}
catch (System.NullReferenceException)
{
OpenSim.Framework.Console.MainLog.Instance.Error("AVATAR", "Unable to load appearance for uninitialized avatar");
}
return true; return true;
} }
} }

View File

@ -313,18 +313,28 @@ namespace OpenSim.Region.Environment.Scenes
} }
if ((Math.Abs(otherRegion.RegionLocX - RegionInfo.RegionLocX) <= 1) && (Math.Abs(otherRegion.RegionLocY - RegionInfo.RegionLocY) <= 1)) if ((Math.Abs(otherRegion.RegionLocX - RegionInfo.RegionLocX) <= 1) && (Math.Abs(otherRegion.RegionLocY - RegionInfo.RegionLocY) <= 1))
{ {
lock (m_regionRestartNotifyList) try
{ {
if (!(m_regionRestartNotifyList.Contains(otherRegion)))
{
m_regionRestartNotifyList.Add(otherRegion);
m_restartWaitTimer.Interval = 50000; ForEachScenePresence(delegate(ScenePresence agent)
m_restartWaitTimer.AutoReset = false; {
m_restartWaitTimer.Elapsed += new ElapsedEventHandler(RestartNotifyWaitElapsed); // If agent is a root agent.
m_restartWaitTimer.Start(); if (!agent.IsChildAgent)
{
//agent.ControllingClient.new
//this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo());
InformClientOfNeighbor(agent, otherRegion);
} }
} }
);
}
catch (System.NullReferenceException)
{
// This means that we're not booted up completely yet.
// This shouldn't happen too often anymore.
MainLog.Instance.Error("SCENE", "Couldn't inform client of regionup because we got a null reference exception");
}
} }
else else
{ {