diff --git a/OpenMetaverse/AgentManager.cs b/OpenMetaverse/AgentManager.cs index 25eaf91c..795759f7 100644 --- a/OpenMetaverse/AgentManager.cs +++ b/OpenMetaverse/AgentManager.cs @@ -2150,6 +2150,24 @@ namespace OpenMetaverse /// This call is blocking public bool Teleport(ulong regionHandle, Vector3 position, Vector3 lookAt) { + if (Client.Network.CurrentSim == null || + Client.Network.CurrentSim.Caps == null || + !Client.Network.CurrentSim.Caps.IsEventQueueRunning) + { + // Wait a bit to see if the event queue comes online + AutoResetEvent queueEvent = new AutoResetEvent(false); + NetworkManager.EventQueueRunningCallback queueCallback = + delegate(Simulator simulator) + { + if (simulator == Client.Network.CurrentSim) + queueEvent.Set(); + }; + + Client.Network.OnEventQueueRunning += queueCallback; + queueEvent.WaitOne(10 * 1000, false); + Client.Network.OnEventQueueRunning -= queueCallback; + } + teleportStat = TeleportStatus.None; teleportEvent.Reset(); diff --git a/Programs/examples/TestClient/ClientManager.cs b/Programs/examples/TestClient/ClientManager.cs index d0a8ecd2..55017bb7 100644 --- a/Programs/examples/TestClient/ClientManager.cs +++ b/Programs/examples/TestClient/ClientManager.cs @@ -259,8 +259,12 @@ namespace OpenMetaverse.TestClient delegate(object state) { TestClient testClient = (TestClient)state; - Logger.Log(testClient.Commands[firstToken].Execute(args, fromAgentID), - Helpers.LogLevel.Info, testClient); + if (testClient.Commands.ContainsKey(firstToken)) + Logger.Log(testClient.Commands[firstToken].Execute(args, fromAgentID), + Helpers.LogLevel.Info, testClient); + else + Logger.Log("Unknown command " + firstToken, Helpers.LogLevel.Warning); + ++completed; }, client);