diff options
author | Justin Clark-Casey (justincc) | 2011-11-11 22:37:57 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-11-11 22:37:57 +0000 |
commit | ce8441132e43dc8e3579f413daf914d48b8f115e (patch) | |
tree | b214c7999eb4f28389bc0e5963c05561d6734af1 /OpenSim/Region/Application/OpenSim.cs | |
parent | remove unncessary IClientAPI parameter from SP.SendSitResponse() (diff) | |
download | opensim-SC-ce8441132e43dc8e3579f413daf914d48b8f115e.zip opensim-SC-ce8441132e43dc8e3579f413daf914d48b8f115e.tar.gz opensim-SC-ce8441132e43dc8e3579f413daf914d48b8f115e.tar.bz2 opensim-SC-ce8441132e43dc8e3579f413daf914d48b8f115e.tar.xz |
Restore sending of OutPacket() for object kills removed in commit c7dd7b1.
OutPacket() must be called within the m_killRecord lock. Otherwise the following event sequence is possible
1) LLClientView.ProcessEntityUpdates() passes the kill record check for a particular part suspends before OutPacket()
2) Another thread calls LLClientView.SendKillObject() to delete the same part and modifies the kill record
3) The same thread places the kill packet on the Task queue.
4) The earlier thread resumes and places the update packet on the Task queue after the kill packet.
This results in a ghost part in the sim that only goes away after client relog.
This commit also removes the unnecessary m_entityUpdates.SyncRoot locking in SendKillObject.
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions