diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 7a25d3f129..961ab9fb04 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -83,6 +83,7 @@ what it is today. * Gerhard * Godfrey * Grumly57 +* GuduleLapointe * Ewe Loon * Fly-Man * Flyte Xevious diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs index d9965b6a64..2206febdb1 100644 --- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs +++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs @@ -44,7 +44,6 @@ namespace OpenSim.Framework.Servers.HttpServer private uint m_WorkerThreadCount = 0; private Thread[] m_workerThreads; private PollServiceWorkerThread[] m_PollServiceWorkerThreads; - private Thread m_watcherThread; private bool m_running = true; public PollServiceRequestManager(BaseHttpServer pSrv, uint pWorkerThreadCount, int pTimeout) @@ -69,13 +68,12 @@ namespace OpenSim.Framework.Servers.HttpServer int.MaxValue); } - m_watcherThread - = Watchdog.StartThread( - this.ThreadStart, - "PollServiceWatcherThread", - ThreadPriority.Normal, - false, - 1000 * 60 * 10); + Watchdog.StartThread( + this.ThreadStart, + "PollServiceWatcherThread", + ThreadPriority.Normal, + false, + 1000 * 60 * 10); } internal void ReQueueEvent(PollServiceHttpRequest req) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index ae4aad313b..beedf518bd 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -56,6 +56,7 @@ namespace OpenSim protected bool m_gui = false; protected string m_consoleType = "local"; protected uint m_consolePort = 0; + protected string m_custom_prompt; private string m_timedScript = "disabled"; private Timer m_scriptTimer; @@ -108,6 +109,7 @@ namespace OpenSim Util.FireAndForgetMethod = asyncCallMethod; stpMaxThreads = startupConfig.GetInt("MaxPoolThreads", 15); + m_custom_prompt = startupConfig.GetString("custom_prompt", "Region"); } if (Util.FireAndForgetMethod == FireAndForgetMethod.SmartThreadPool) @@ -828,10 +830,9 @@ namespace OpenSim { MainConsole.Instance.Output("Usage: change region "); } - string regionName = (m_sceneManager.CurrentScene == null ? "root" : m_sceneManager.CurrentScene.RegionInfo.RegionName); MainConsole.Instance.Output(String.Format("Currently selected region is {0}", regionName)); - m_console.DefaultPrompt = String.Format("Region ({0}) ", regionName); + m_console.DefaultPrompt = String.Format("{0} ({1}) ", m_custom_prompt, regionName); m_console.ConsoleScene = m_sceneManager.CurrentScene; } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index a12a17c235..a3ac756a1d 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -3322,7 +3322,7 @@ namespace OpenSim.Region.Framework.Scenes } /// - /// Update the entire rotation of the group. + /// Update the rotation of just the root prim of a linkset. /// /// public void UpdateRootRotation(Quaternion rot) diff --git a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs index 6305d272f7..dce0ec8684 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs @@ -285,9 +285,11 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests // FIXME: This is different for live avatars - z position is adjusted. This is half the height of the // default avatar. + // Curiously, Vector3.ToString() will not display the last two places of the float. For example, + // printing out npc.AbsolutePosition will give <0, 0, 0.8454993> not <0, 0, 0.845499337> Assert.That( npc.AbsolutePosition, - Is.EqualTo(part.AbsolutePosition + new Vector3(0, 0, 0.8454993f))); + Is.EqualTo(part.AbsolutePosition + new Vector3(0, 0, 0.845499337f))); npcModule.Stand(npc.UUID, scene); diff --git a/OpenSim/Tools/pCampBot/Bot.cs b/OpenSim/Tools/pCampBot/Bot.cs index 1b30766ef0..7f941a497f 100644 --- a/OpenSim/Tools/pCampBot/Bot.cs +++ b/OpenSim/Tools/pCampBot/Bot.cs @@ -222,7 +222,7 @@ namespace pCampBot } else { - MainConsole.Instance.OutputFormat( + m_log.ErrorFormat( "{0} {1} cannot login: {2}", FirstName, LastName, Client.Network.LoginMessage); if (OnDisconnected != null) @@ -266,12 +266,12 @@ namespace pCampBot } else { - MainConsole.Instance.Output(String.Format("Failed to decode {0} asset {1}", asset.AssetType, asset.AssetID)); + m_log.WarnFormat("Failed to decode {0} asset {1}", asset.AssetType, asset.AssetID); } } catch (Exception e) { - MainConsole.Instance.Output(String.Format("Exception: {0}",e.ToString())); + m_log.ErrorFormat("Exception: {0}{1}", e.Message, e.StackTrace); } } } @@ -305,7 +305,7 @@ namespace pCampBot if (wear == "yes") { //TODO: Implement random outfit picking - MainConsole.Instance.Output("Picks a random outfit. Not yet implemented."); + m_log.DebugFormat("Picks a random outfit. Not yet implemented."); } else if (wear != "save") saveDir = "MyAppearance/" + wear; @@ -334,7 +334,9 @@ namespace pCampBot listwearables.Add(item); } else - MainConsole.Instance.Output(String.Format("Failed to create item {0}",item.Name)); + { + m_log.WarnFormat("Failed to create item {0}", item.Name); + } } ); } @@ -356,7 +358,9 @@ namespace pCampBot listwearables.Add(item); } else - MainConsole.Instance.Output(String.Format("Failed to create item {0}",item.Name)); + { + m_log.WarnFormat("Failed to create item {0}", item.Name); + } } ); } @@ -364,10 +368,12 @@ namespace pCampBot Thread.Sleep(1000); if (listwearables == null || listwearables.Count == 0) - MainConsole.Instance.Output("Nothing to send on this folder!"); + { + m_log.DebugFormat("Nothing to send on this folder!"); + } else { - MainConsole.Instance.Output(String.Format("Sending {0} wearables...",listwearables.Count)); + m_log.DebugFormat("Sending {0} wearables...", listwearables.Count); Client.Appearance.WearOutfit(listwearables, false); } } @@ -447,17 +453,20 @@ namespace pCampBot for (int i = 0; i < prim.Textures.FaceTextures.Length; i++) { - UUID textureID = prim.Textures.FaceTextures[i].TextureID; + Primitive.TextureEntryFace face = prim.Textures.FaceTextures[i]; - if (textureID != UUID.Zero) - GetTexture(textureID); + if (face != null) + { + UUID textureID = prim.Textures.FaceTextures[i].TextureID; + + if (textureID != UUID.Zero) + GetTexture(textureID); + } } } - if (prim.Sculpt.SculptTexture != UUID.Zero) - { + if (prim.Sculpt != null && prim.Sculpt.SculptTexture != UUID.Zero) GetTexture(prim.Sculpt.SculptTexture); - } } } diff --git a/OpenSim/Tools/pCampBot/BotManager.cs b/OpenSim/Tools/pCampBot/BotManager.cs index 704770a960..c4c6f8f9d9 100644 --- a/OpenSim/Tools/pCampBot/BotManager.cs +++ b/OpenSim/Tools/pCampBot/BotManager.cs @@ -51,7 +51,6 @@ namespace pCampBot protected CommandConsole m_console; protected List m_lBot; protected Random somthing = new Random(Environment.TickCount); - protected int numbots = 0; public IConfig Config { get; private set; } /// @@ -200,16 +199,17 @@ namespace pCampBot { case EventType.CONNECTED: m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Connected"); - numbots++; -// m_log.InfoFormat("NUMBOTS {0}", numbots); break; case EventType.DISCONNECTED: m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Disconnected"); - numbots--; -// m_log.InfoFormat("NUMBOTS {0}", numbots); - if (numbots <= 0) - Environment.Exit(0); - break; + + lock (m_lBot) + { + if (m_lBot.TrueForAll(b => !b.IsConnected)) + Environment.Exit(0); + + break; + } } } diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index e71fb05e13..c5205dbeae 100755 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -230,6 +230,11 @@ ;; by scripts have changed. ; DeleteScriptsOnStartup = true + ;; Custom prompt + ;; This value replaces the word "Region" in console prompt + ;; (usualy "Region (regionName) # " + ;; Useful only if you have to monitor serveral servers + ; custom_prompt = "MyServer1" [SMTP] ;; The SMTP server enabled the email module to send email to external