aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs3
-rw-r--r--OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs12
-rw-r--r--OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs124
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs15
-rw-r--r--OpenSim/Server/Handlers/Login/LLLoginHandlers.cs24
6 files changed, 95 insertions, 85 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index b304403..c1d0727 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -508,8 +508,7 @@ namespace OpenSim
508 scene.SnmpService.LinkUp(scene); 508 scene.SnmpService.LinkUp(scene);
509 } 509 }
510 510
511 scene.StartTimer(); 511 scene.Start();
512 scene.StartTimerWatchdog();
513 512
514 scene.StartScripts(); 513 scene.StartScripts();
515 514
diff --git a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs
index b5e79b8..7c6df03 100644
--- a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs
+++ b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs
@@ -598,12 +598,12 @@ namespace OpenSim.Region.CoreModules.World.Terrain
598 "[TERRAIN]: Could not save terrain from {0} to {1}. Valid file extensions are {2}", 598 "[TERRAIN]: Could not save terrain from {0} to {1}. Valid file extensions are {2}",
599 m_scene.RegionInfo.RegionName, filename, m_supportedFileExtensions); 599 m_scene.RegionInfo.RegionName, filename, m_supportedFileExtensions);
600 } 600 }
601 else 601// else
602 { 602// {
603 m_log.ErrorFormat( 603// m_log.ErrorFormat(
604 "[TERRAIN]: Could not save terrain from {0} to {1}. {2} {3} {4} {5} {6} {7}", 604// "[TERRAIN]: Could not save terrain from {0} to {1}. {2} {3} {4} {5} {6} {7}",
605 m_scene.RegionInfo.RegionName, filename, fileWidth, fileHeight, fileStartX, fileStartY, offsetX, offsetY); 605// m_scene.RegionInfo.RegionName, filename, fileWidth, fileHeight, fileStartX, fileStartY, offsetX, offsetY);
606 } 606// }
607 } 607 }
608 608
609 /// <summary> 609 /// <summary>
diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs
index cded9be..f5623bd 100644
--- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs
+++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs
@@ -125,7 +125,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation
125 125
126 // XXX: For some reason, we store all animations and use them with upper case names, but in LSL animations 126 // XXX: For some reason, we store all animations and use them with upper case names, but in LSL animations
127 // are referenced with lower case names! 127 // are referenced with lower case names!
128 UUID animID = DefaultAvatarAnimations.GetDefaultAnimation(name); 128 UUID animID = DefaultAvatarAnimations.GetDefaultAnimation(name.ToUpper());
129 if (animID == UUID.Zero) 129 if (animID == UUID.Zero)
130 return; 130 return;
131 131
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 44a738e..34ad58a 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -215,14 +215,12 @@ namespace OpenSim.Region.Framework.Scenes
215 /// </summary> 215 /// </summary>
216 private bool m_cleaningTemps = false; 216 private bool m_cleaningTemps = false;
217 217
218 private Object m_heartbeatLock = new Object(); 218// private Object m_heartbeatLock = new Object();
219 219
220 // TODO: Possibly stop other classes being able to manipulate this directly. 220 // TODO: Possibly stop other classes being able to manipulate this directly.
221 private SceneGraph m_sceneGraph; 221 private SceneGraph m_sceneGraph;
222 private volatile int m_bordersLocked; 222 private volatile int m_bordersLocked;
223// private int m_RestartTimerCounter;
224 private readonly Timer m_restartTimer = new Timer(15000); // Wait before firing 223 private readonly Timer m_restartTimer = new Timer(15000); // Wait before firing
225// private int m_incrementsof15seconds;
226 private volatile bool m_backingup; 224 private volatile bool m_backingup;
227 private Dictionary<UUID, ReturnInfo> m_returns = new Dictionary<UUID, ReturnInfo>(); 225 private Dictionary<UUID, ReturnInfo> m_returns = new Dictionary<UUID, ReturnInfo>();
228 private Dictionary<UUID, SceneObjectGroup> m_groupsWithTargets = new Dictionary<UUID, SceneObjectGroup>(); 226 private Dictionary<UUID, SceneObjectGroup> m_groupsWithTargets = new Dictionary<UUID, SceneObjectGroup>();
@@ -230,16 +228,34 @@ namespace OpenSim.Region.Framework.Scenes
230 private bool m_physics_enabled = true; 228 private bool m_physics_enabled = true;
231 private bool m_scripts_enabled = true; 229 private bool m_scripts_enabled = true;
232 private string m_defaultScriptEngine; 230 private string m_defaultScriptEngine;
231
232 /// <summary>
233 /// Tick at which the last login occurred.
234 /// </summary>
233 private int m_LastLogin; 235 private int m_LastLogin;
234 private Thread HeartbeatThread = null;
235 private volatile bool shuttingdown;
236 236
237 private int m_lastUpdate;
238 private int m_lastIncoming; 237 private int m_lastIncoming;
239 private int m_lastOutgoing; 238 private int m_lastOutgoing;
240 private bool m_firstHeartbeat = true;
241 private int m_hbRestarts = 0; 239 private int m_hbRestarts = 0;
242 240
241
242 /// <summary>
243 /// Thread that runs the scene loop.
244 /// </summary>
245 private Thread m_heartbeatThread;
246
247 /// <summary>
248 /// True if these scene is in the process of shutting down or is shutdown.
249 /// </summary>
250 public bool ShuttingDown
251 {
252 get { return m_shuttingDown; }
253 }
254 private volatile bool m_shuttingDown;
255
256// private int m_lastUpdate;
257 private bool m_firstHeartbeat = true;
258
243 private UpdatePrioritizationSchemes m_priorityScheme = UpdatePrioritizationSchemes.Time; 259 private UpdatePrioritizationSchemes m_priorityScheme = UpdatePrioritizationSchemes.Time;
244 private bool m_reprioritizationEnabled = true; 260 private bool m_reprioritizationEnabled = true;
245 private double m_reprioritizationInterval = 5000.0; 261 private double m_reprioritizationInterval = 5000.0;
@@ -577,7 +593,6 @@ namespace OpenSim.Region.Framework.Scenes
577 m_EstateDataService = estateDataService; 593 m_EstateDataService = estateDataService;
578 m_regionHandle = m_regInfo.RegionHandle; 594 m_regionHandle = m_regInfo.RegionHandle;
579 m_regionName = m_regInfo.RegionName; 595 m_regionName = m_regInfo.RegionName;
580 m_lastUpdate = Util.EnvironmentTickCount();
581 m_lastIncoming = 0; 596 m_lastIncoming = 0;
582 m_lastOutgoing = 0; 597 m_lastOutgoing = 0;
583 598
@@ -834,18 +849,13 @@ namespace OpenSim.Region.Framework.Scenes
834 849
835 m_permissions = new ScenePermissions(this); 850 m_permissions = new ScenePermissions(this);
836 851
837 m_lastUpdate = Util.EnvironmentTickCount(); 852// m_lastUpdate = Util.EnvironmentTickCount();
838 } 853 }
839 854
840 #endregion 855 #endregion
841 856
842 #region Startup / Close Methods 857 #region Startup / Close Methods
843 858
844 public bool ShuttingDown
845 {
846 get { return shuttingdown; }
847 }
848
849 /// <value> 859 /// <value>
850 /// The scene graph for this scene 860 /// The scene graph for this scene
851 /// </value> 861 /// </value>
@@ -1107,6 +1117,12 @@ namespace OpenSim.Region.Framework.Scenes
1107 m_physics_enabled = enablePhysics; 1117 m_physics_enabled = enablePhysics;
1108 } 1118 }
1109 1119
1120// if (options.ContainsKey("collisions"))
1121// {
1122// // TODO: Implement. If false, should stop objects colliding, though possibly should still allow
1123// // the avatar themselves to collide with the ground.
1124// }
1125
1110 if (options.ContainsKey("teleport")) 1126 if (options.ContainsKey("teleport"))
1111 { 1127 {
1112 bool enableTeleportDebugging; 1128 bool enableTeleportDebugging;
@@ -1158,8 +1174,7 @@ namespace OpenSim.Region.Framework.Scenes
1158 ForEachScenePresence(delegate(ScenePresence avatar) { avatar.ControllingClient.Close(); }); 1174 ForEachScenePresence(delegate(ScenePresence avatar) { avatar.ControllingClient.Close(); });
1159 1175
1160 // Stop updating the scene objects and agents. 1176 // Stop updating the scene objects and agents.
1161 //m_heartbeatTimer.Close(); 1177 m_shuttingDown = true;
1162 shuttingdown = true;
1163 1178
1164 m_log.Debug("[SCENE]: Persisting changed objects"); 1179 m_log.Debug("[SCENE]: Persisting changed objects");
1165 EventManager.TriggerSceneShuttingDown(this); 1180 EventManager.TriggerSceneShuttingDown(this);
@@ -1183,16 +1198,16 @@ namespace OpenSim.Region.Framework.Scenes
1183 } 1198 }
1184 1199
1185 /// <summary> 1200 /// <summary>
1186 /// Start the timer which triggers regular scene updates 1201 /// Start the scene
1187 /// </summary> 1202 /// </summary>
1188 public void StartTimer() 1203 public void Start()
1189 { 1204 {
1190// m_log.DebugFormat("[SCENE]: Starting Heartbeat timer for {0}", RegionInfo.RegionName); 1205// m_log.DebugFormat("[SCENE]: Starting Heartbeat timer for {0}", RegionInfo.RegionName);
1191 1206
1192 //m_heartbeatTimer.Enabled = true; 1207 //m_heartbeatTimer.Enabled = true;
1193 //m_heartbeatTimer.Interval = (int)(m_timespan * 1000); 1208 //m_heartbeatTimer.Interval = (int)(m_timespan * 1000);
1194 //m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat); 1209 //m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat);
1195 if (HeartbeatThread != null) 1210 if (m_heartbeatThread != null)
1196 { 1211 {
1197 m_hbRestarts++; 1212 m_hbRestarts++;
1198 if(m_hbRestarts > 10) 1213 if(m_hbRestarts > 10)
@@ -1208,13 +1223,13 @@ namespace OpenSim.Region.Framework.Scenes
1208//proc.WaitForExit(); 1223//proc.WaitForExit();
1209//Thread.Sleep(1000); 1224//Thread.Sleep(1000);
1210//Environment.Exit(1); 1225//Environment.Exit(1);
1211 HeartbeatThread.Abort(); 1226 m_heartbeatThread.Abort();
1212 Watchdog.AbortThread(HeartbeatThread.ManagedThreadId); 1227 Watchdog.AbortThread(m_heartbeatThread.ManagedThreadId);
1213 HeartbeatThread = null; 1228 m_heartbeatThread = null;
1214 } 1229 }
1215 m_lastUpdate = Util.EnvironmentTickCount(); 1230// m_lastUpdate = Util.EnvironmentTickCount();
1216 1231
1217 HeartbeatThread 1232 m_heartbeatThread
1218 = Watchdog.StartThread( 1233 = Watchdog.StartThread(
1219 Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, false); 1234 Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, false);
1220 } 1235 }
@@ -1245,30 +1260,32 @@ namespace OpenSim.Region.Framework.Scenes
1245 /// </summary> 1260 /// </summary>
1246 private void Heartbeat() 1261 private void Heartbeat()
1247 { 1262 {
1248 if (!Monitor.TryEnter(m_heartbeatLock)) 1263// if (!Monitor.TryEnter(m_heartbeatLock))
1249 { 1264// {
1250 Watchdog.RemoveThread(); 1265// Watchdog.RemoveThread();
1251 return; 1266// return;
1252 } 1267// }
1253 1268
1254 try 1269// try
1255 { 1270// {
1256 m_eventManager.TriggerOnRegionStarted(this);
1257 1271
1258 // The first frame can take a very long time due to physics actors being added on startup. Therefore, 1272 m_eventManager.TriggerOnRegionStarted(this);
1259 // don't turn on the watchdog alarm for this thread until the second frame, in order to prevent false
1260 // alarms for scenes with many objects.
1261 Update(1);
1262 Watchdog.GetCurrentThreadInfo().AlarmIfTimeout = true;
1263 1273
1264 while (!shuttingdown) 1274 // The first frame can take a very long time due to physics actors being added on startup. Therefore,
1265 Update(-1); 1275 // don't turn on the watchdog alarm for this thread until the second frame, in order to prevent false
1266 } 1276 // alarms for scenes with many objects.
1267 finally 1277 Update(1);
1268 { 1278 Watchdog.GetCurrentThreadInfo().AlarmIfTimeout = true;
1269 Monitor.Pulse(m_heartbeatLock); 1279 Update(-1);
1270 Monitor.Exit(m_heartbeatLock); 1280
1271 } 1281// m_lastUpdate = Util.EnvironmentTickCount();
1282// m_firstHeartbeat = false;
1283// }
1284// finally
1285// {
1286// Monitor.Pulse(m_heartbeatLock);
1287// Monitor.Exit(m_heartbeatLock);
1288// }
1272 1289
1273 Watchdog.RemoveThread(); 1290 Watchdog.RemoveThread();
1274 } 1291 }
@@ -1287,7 +1304,7 @@ namespace OpenSim.Region.Framework.Scenes
1287 List<Vector3> coarseLocations; 1304 List<Vector3> coarseLocations;
1288 List<UUID> avatarUUIDs; 1305 List<UUID> avatarUUIDs;
1289 1306
1290 while (!shuttingdown && (endFrame == null || Frame < endFrame)) 1307 while (!m_shuttingDown && (endFrame == null || Frame < endFrame))
1291 { 1308 {
1292 maintc = Util.EnvironmentTickCount(); 1309 maintc = Util.EnvironmentTickCount();
1293 ++Frame; 1310 ++Frame;
@@ -1463,15 +1480,11 @@ namespace OpenSim.Region.Framework.Scenes
1463 maintc = Util.EnvironmentTickCountSubtract(m_lastFrameTick, maintc); 1480 maintc = Util.EnvironmentTickCountSubtract(m_lastFrameTick, maintc);
1464 maintc = (int)(MinFrameTime * 1000) - maintc; 1481 maintc = (int)(MinFrameTime * 1000) - maintc;
1465 1482
1466 m_lastUpdate = Util.EnvironmentTickCount();
1467 m_firstHeartbeat = false; 1483 m_firstHeartbeat = false;
1468 1484
1469 if (maintc > 0) 1485 if (maintc > 0)
1470 Thread.Sleep(maintc); 1486 Thread.Sleep(maintc);
1471 1487
1472 m_lastUpdate = Util.EnvironmentTickCount();
1473 m_firstHeartbeat = false;
1474
1475 // Optionally warn if a frame takes double the amount of time that it should. 1488 // Optionally warn if a frame takes double the amount of time that it should.
1476 if (DebugUpdates 1489 if (DebugUpdates
1477 && Util.EnvironmentTickCountSubtract( 1490 && Util.EnvironmentTickCountSubtract(
@@ -2662,7 +2675,6 @@ namespace OpenSim.Region.Framework.Scenes
2662 || (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0; 2675 || (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0;
2663 2676
2664 CheckHeartbeat(); 2677 CheckHeartbeat();
2665 ScenePresence presence;
2666 2678
2667 ScenePresence sp = GetScenePresence(client.AgentId); 2679 ScenePresence sp = GetScenePresence(client.AgentId);
2668 2680
@@ -3253,7 +3265,7 @@ namespace OpenSim.Region.Framework.Scenes
3253 3265
3254 public override void RemoveClient(UUID agentID, bool closeChildAgents) 3266 public override void RemoveClient(UUID agentID, bool closeChildAgents)
3255 { 3267 {
3256 CheckHeartbeat(); 3268// CheckHeartbeat();
3257 bool isChildAgent = false; 3269 bool isChildAgent = false;
3258 ScenePresence avatar = GetScenePresence(agentID); 3270 ScenePresence avatar = GetScenePresence(agentID);
3259 if (avatar != null) 3271 if (avatar != null)
@@ -4700,7 +4712,7 @@ namespace OpenSim.Region.Framework.Scenes
4700 4712
4701 int health=1; // Start at 1, means we're up 4713 int health=1; // Start at 1, means we're up
4702 4714
4703 if (Util.EnvironmentTickCountSubtract(m_lastUpdate) < 1000) 4715 if ((Util.EnvironmentTickCountSubtract(m_lastFrameTick)) < 1000)
4704 { 4716 {
4705 health+=1; 4717 health+=1;
4706 flags |= 1; 4718 flags |= 1;
@@ -4737,6 +4749,8 @@ Environment.Exit(1);
4737 // 4749 //
4738 if (Util.EnvironmentTickCountSubtract(m_LastLogin) < 240000) 4750 if (Util.EnvironmentTickCountSubtract(m_LastLogin) < 240000)
4739 health++; 4751 health++;
4752 else
4753 return health;
4740 4754
4741 return health; 4755 return health;
4742 } 4756 }
@@ -4929,8 +4943,8 @@ Environment.Exit(1);
4929 if (m_firstHeartbeat) 4943 if (m_firstHeartbeat)
4930 return; 4944 return;
4931 4945
4932 if (Util.EnvironmentTickCountSubtract(m_lastUpdate) > 5000) 4946 if ((Util.EnvironmentTickCountSubtract(m_lastFrameTick)) > 5000)
4933 StartTimer(); 4947 Start();
4934 } 4948 }
4935 4949
4936 public override ISceneObject DeserializeObject(string representation) 4950 public override ISceneObject DeserializeObject(string representation)
diff --git a/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs b/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs
index d0142a4..0b9f875 100644
--- a/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs
@@ -70,8 +70,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
70 70
71 public void Initialise(IConfigSource config) 71 public void Initialise(IConfigSource config)
72 { 72 {
73 //m_log.Info("[RegionReady] Initialising");
74
75 m_config = config.Configs["RegionReady"]; 73 m_config = config.Configs["RegionReady"];
76 if (m_config != null) 74 if (m_config != null)
77 { 75 {
@@ -84,9 +82,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
84 m_uri = m_config.GetString("alert_uri",string.Empty); 82 m_uri = m_config.GetString("alert_uri",string.Empty);
85 } 83 }
86 } 84 }
87
88// if (!m_enabled)
89// m_log.Info("[RegionReady] disabled.");
90 } 85 }
91 86
92 public void AddRegion(Scene scene) 87 public void AddRegion(Scene scene)
@@ -113,7 +108,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
113 { 108 {
114 scene.LoginLock = true; 109 scene.LoginLock = true;
115 scene.LoginsDisabled = true; 110 scene.LoginsDisabled = true;
116 m_log.InfoFormat("[RegionReady]: Logins disabled for {0}",m_scene.RegionInfo.RegionName); 111 m_log.InfoFormat("[RegionReady]: Region {0} - logins disabled during initialization.",m_scene.RegionInfo.RegionName);
117 112
118 if(m_uri != string.Empty) 113 if(m_uri != string.Empty)
119 { 114 {
@@ -167,7 +162,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
167 162
168 void OnEmptyScriptCompileQueue(int numScriptsFailed, string message) 163 void OnEmptyScriptCompileQueue(int numScriptsFailed, string message)
169 { 164 {
170 m_log.InfoFormat("[RegionReady]: Script compile queue empty!"); 165 m_log.DebugFormat("[RegionReady]: Script compile queue empty!");
171 166
172 if (m_firstEmptyCompileQueue || m_oarFileLoading) 167 if (m_firstEmptyCompileQueue || m_oarFileLoading)
173 { 168 {
@@ -194,7 +189,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
194 c.SenderUUID = UUID.Zero; 189 c.SenderUUID = UUID.Zero;
195 c.Scene = m_scene; 190 c.Scene = m_scene;
196 191
197 m_log.InfoFormat("[RegionReady]: Region \"{0}\" is ready: \"{1}\" on channel {2}", 192 m_log.DebugFormat("[RegionReady]: Region \"{0}\" is ready: \"{1}\" on channel {2}",
198 m_scene.RegionInfo.RegionName, c.Message, m_channelNotify); 193 m_scene.RegionInfo.RegionName, c.Message, m_channelNotify);
199 194
200 m_scene.EventManager.TriggerOnChatBroadcast(this, c); 195 m_scene.EventManager.TriggerOnChatBroadcast(this, c);
@@ -210,7 +205,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
210 { 205 {
211 m_lastOarLoadedOk = true; 206 m_lastOarLoadedOk = true;
212 } else { 207 } else {
213 m_log.InfoFormat("[RegionReady]: Oar file load errors: {0}", message); 208 m_log.WarnFormat("[RegionReady]: Oar file load errors: {0}", message);
214 m_lastOarLoadedOk = false; 209 m_lastOarLoadedOk = false;
215 } 210 }
216 } 211 }
@@ -233,7 +228,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
233 // m_log.InfoFormat("[RegionReady]: Logins enabled for {0}, Oar {1}", 228 // m_log.InfoFormat("[RegionReady]: Logins enabled for {0}, Oar {1}",
234 // m_scene.RegionInfo.RegionName, m_oarFileLoading.ToString()); 229 // m_scene.RegionInfo.RegionName, m_oarFileLoading.ToString());
235 230
236 m_log.InfoFormat("[RegionReady]: Logins enabled for {0}", m_scene.RegionInfo.RegionName); 231 m_log.InfoFormat("[RegionReady]: Initialization complete - logins enabled for {0}", m_scene.RegionInfo.RegionName);
237 232
238 if ( m_uri != string.Empty ) 233 if ( m_uri != string.Empty )
239 { 234 {
diff --git a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs
index ed62f95..f83a239 100644
--- a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs
+++ b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs
@@ -73,17 +73,19 @@ namespace OpenSim.Server.Handlers.Login
73 73
74 if (requestData != null) 74 if (requestData != null)
75 { 75 {
76 foreach (string key in requestData.Keys) 76 // Debug code to show exactly what login parameters the viewer is sending us.
77 { 77 // TODO: Extract into a method that can be generally applied if one doesn't already exist.
78 object value = requestData[key]; 78// foreach (string key in requestData.Keys)
79 Console.WriteLine("{0}:{1}", key, value); 79// {
80 if (value is ArrayList) 80// object value = requestData[key];
81 { 81// Console.WriteLine("{0}:{1}", key, value);
82 ICollection col = value as ICollection; 82// if (value is ArrayList)
83 foreach (object item in col) 83// {
84 Console.WriteLine(" {0}", item); 84// ICollection col = value as ICollection;
85 } 85// foreach (object item in col)
86 } 86// Console.WriteLine(" {0}", item);
87// }
88// }
87 89
88 if (requestData.ContainsKey("first") && requestData["first"] != null && 90 if (requestData.ContainsKey("first") && requestData["first"] != null &&
89 requestData.ContainsKey("last") && requestData["last"] != null && ( 91 requestData.ContainsKey("last") && requestData["last"] != null && (