diff options
author | Justin Clark-Casey (justincc) | 2012-05-14 18:36:26 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-05-14 18:36:26 +0100 |
commit | c2aa3b90d9d367bcaeba93352ef6b0f513e663f7 (patch) | |
tree | da532e0b514f7f7b143db0a7f9cc0731ae02112f /OpenSim/Region/OptionalModules/World/NPC | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC-c2aa3b90d9d367bcaeba93352ef6b0f513e663f7.zip opensim-SC-c2aa3b90d9d367bcaeba93352ef6b0f513e663f7.tar.gz opensim-SC-c2aa3b90d9d367bcaeba93352ef6b0f513e663f7.tar.bz2 opensim-SC-c2aa3b90d9d367bcaeba93352ef6b0f513e663f7.tar.xz |
Set the agent in transit teleport flag at the first available opportunity (i.e. when IsInTransit() was being checked) to close down a race condition.
On EntityTransferModule.DoTeleport() there was an IsInTransit() check to prevent multiple simultaneous teleport attempts.
However, the SetInTransit() was only performed later on, which left a window in which multiple threads could pass the IsInTransit() check.
This has been seen in the field and the results aren't pretty.
This commit effectively combines the IsInTransit() and SetInTransit() checks so there is no such window.
More failure cases are made to to call ResetInTransit() to adjust to this move.
Diffstat (limited to 'OpenSim/Region/OptionalModules/World/NPC')
0 files changed, 0 insertions, 0 deletions