aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferStateMachine.cs (follow)
Commit message (Collapse)AuthorAgeFilesLines
* At strategic points in the teleport process, if the client has ↵Justin Clark-Casey (justincc)2013-03-221-7/+13
| | | | | | | simultaneously logged out then do not continue. This aims to reduce any side effects if the process tries to complete after the client has logged back in (e.g. it was delayed due to a slow destination region response). This introduces a new Aborting entity transfer state which signals that the teleport should be stopped but no compensating actions performed.
* On a teleport, lock m_agentsInTransit whilst we grab the value to check for ↵Justin Clark-Casey (justincc)2013-03-211-1/+8
| | | | completion just to be sure we're not using a thread cached version.
* Improve teleport cancellation in some circumstances, though cancelling ↵Justin Clark-Casey (justincc)2013-03-121-27/+97
| | | | | | | | | | | | teleports is still not recommended. Previously, hitting the cancel button on a teleport would cancel on the client side but the request was ignored on the server side. Cancel would still work if the teleport failed in the early stages (e.g. because the destination never replied to early CreateAgent and UpdateAgent messages). But if the teleport still completed after a delay here or later on, the viewer would become confused (usual symptom appears to be avatar being unable to move/reteleport). This commit makes OpenSimulator obey cancellations which are received before it sends the TeleportFinish event queue message and does proper cleanup. But cancellations received after this (which can happen even though the cancel button is removed as this messages comes on a different thread) can still result in a frozen avatar. This looks extremely difficult and impossible to fix. I can replicate the same problem on the Linden Lab grid by hitting cancel immediately after a teleport starts (a teleport which would otherwise quickly succeed).
* refactor: factor out entity transfer state machine into a separate class to ↵Justin Clark-Casey (justincc)2012-05-281-0/+269
make code more analyzable