From 3891a8946bb72c9256d8de4185bf4a72c90be859 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 22 Jul 2013 11:54:35 -0700
Subject: New Teleport protocol (V2), still compatible with V1 and older.
(version of the destination is being checked) In this new protocol, and as
committed before, the viewer is not sent
EnableSimulator/EstablishChildCommunication for the destination. Instead, it
is sent TeleportFinish directly. TeleportFinish, in turn, makes the viewer
send a UserCircuitCode packet followed by CompleteMovementIntoRegion packet.
These 2 packets tend to occur one after the other almost immediately to the
point that when CMIR arrives the client is not even connected yet and that
packet is ignored (there might have been some race conditions here before);
then the viewer sends CMIR again within 5-8 secs. But the delay between them
may be higher in busier regions, which may lead to race conditions. This
commit improves the process so there are are no race conditions at the
destination. CompleteMovement (triggered by the viewer) waits until Update
has been sent from the origin. Update, in turn, waits until there is a *root*
scene presence -- so making sure CompleteMovement has run MakeRoot. In other
words, there are two threadlets at the destination, one from the viewer and
one from the origin region, waiting for each other to do the right thing.
That makes it safe to close the agent at the origin upon return of the Update
call without having to wait for callback, because we are absolutely sure that
the viewer knows it is in th new region. Note also that in the V1 protocol,
the destination was getting UseCircuitCode from the viewer twice -- once on
EstablishAgentCommunication and then again on TeleportFinish. The second UCC
was being ignored, but it shows how we were not following the expected
steps...
---
.../ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut')
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
index 6d5039b..7dd10f7 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
@@ -48,7 +48,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
///
/// Version of this service
///
- private const string m_Version = "SIMULATION/0.1";
+ private const string m_Version = "SIMULATION/0.2";
///
/// Map region ID to scene.
--
cgit v1.1