OpenSimMirror/OpenSim/Region/ClientStack/Linden/UDP
Diva Canto 3891a8946b 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...
2013-07-24 14:27:58 -07:00
..
Properties Deleted all AssemblyFileVersion directives 2013-02-19 17:14:55 -08:00
Tests Fix mono warning in LLImageManagerTests 2013-07-06 00:55:14 +01:00
IncomingPacket.cs If RecycleBaseUDPPackets = true, also pool IncomingPackets to reduce memory churn 2012-10-17 21:08:15 +01:00
IncomingPacketHistoryCollection.cs First stab at cleaning up Caps. Compiles. Untested. 2011-04-30 09:24:15 -07:00
J2KImage.cs HG: close a loophole by which if something was wrong with the ServiceURLs it resulted in never ending asset requests 2013-07-02 13:29:44 -07:00
LLClientView.cs Added check for user movement specification before discarding an incoming 2013-07-22 15:41:14 -07:00
LLImageManager.cs Do some simple queue empty checks in the main outgoing udp loop instead of always performing these on a separate fired thread. 2013-07-21 08:56:48 -07:00
LLUDPClient.cs Do some simple queue empty checks in the main outgoing udp loop instead of always performing these on a separate fired thread. 2013-07-21 08:56:48 -07:00
LLUDPServer.cs New Teleport protocol (V2), still compatible with V1 and older. (version of the destination is being checked) 2013-07-24 14:27:58 -07:00
OpenSimUDPBase.cs Add clientstack.OutgoingUDPSendsCount stat to show number of outbound UDP packets sent by a region per second 2013-07-23 00:35:34 +01:00
OutgoingPacket.cs First stab at cleaning up Caps. Compiles. Untested. 2011-04-30 09:24:15 -07:00
PacketPool.cs Make PacketPool class stats pull stats instead of push stats so they can be lifted up into LLUDPServer and be distiguished by scene name 2012-11-15 02:02:59 +00:00
ThrottleRates.cs First stab at cleaning up Caps. Compiles. Untested. 2011-04-30 09:24:15 -07:00
TokenBucket.cs minor: remove some mono compiler warnings 2011-07-30 03:19:00 +01:00
UnackedPacketCollection.cs minor: insert some commented out log lines which are a blunt but useful instrument to see packet expiry and received acks 2011-10-12 19:35:40 +01:00