aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs18
1 files changed, 9 insertions, 9 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index ee28914..6ccabf1 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -509,19 +509,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP
509 /// </summary> 509 /// </summary>
510 public void Close() 510 public void Close()
511 { 511 {
512 Close(true); 512 Close(true, false);
513 } 513 }
514 514
515 /// <summary> 515 public void Close(bool sendStop, bool force)
516 /// Shut down the client view
517 /// </summary>
518 public void Close(bool sendStop)
519 { 516 {
520 // We lock here to prevent race conditions between two threads calling close simultaneously (e.g. 517 // We lock here to prevent race conditions between two threads calling close simultaneously (e.g.
521 // a simultaneous relog just as a client is being closed out due to no packet ack from the old connection. 518 // a simultaneous relog just as a client is being closed out due to no packet ack from the old connection.
522 lock (CloseSyncLock) 519 lock (CloseSyncLock)
523 { 520 {
524 if (!IsActive) 521 // We still perform a force close inside the sync lock since this is intended to attempt close where
522 // there is some unidentified connection problem, not where we have issues due to deadlock
523 if (!IsActive && !force)
525 return; 524 return;
526 525
527 IsActive = false; 526 IsActive = false;
@@ -4534,7 +4533,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4534 { 4533 {
4535 returnblock[j] = new EstateOwnerMessagePacket.ParamListBlock(); 4534 returnblock[j] = new EstateOwnerMessagePacket.ParamListBlock();
4536 } 4535 }
4537 j = 0; 4536 j = 0;
4538 4537
4539 returnblock[j].Parameter = Utils.StringToBytes(estateID.ToString()); j++; 4538 returnblock[j].Parameter = Utils.StringToBytes(estateID.ToString()); j++;
4540 returnblock[j].Parameter = Utils.StringToBytes(((int)Constants.EstateAccessCodex.EstateBans).ToString()); j++; 4539 returnblock[j].Parameter = Utils.StringToBytes(((int)Constants.EstateAccessCodex.EstateBans).ToString()); j++;
@@ -5963,7 +5962,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5963 msgpack.MessageBlock.ID, 5962 msgpack.MessageBlock.ID,
5964 msgpack.MessageBlock.Offline != 0 ? true : false, 5963 msgpack.MessageBlock.Offline != 0 ? true : false,
5965 msgpack.MessageBlock.Position, 5964 msgpack.MessageBlock.Position,
5966 msgpack.MessageBlock.BinaryBucket); 5965 msgpack.MessageBlock.BinaryBucket,
5966 true);
5967 5967
5968 handlerInstantMessage(this, im); 5968 handlerInstantMessage(this, im);
5969 } 5969 }
@@ -12193,7 +12193,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
12193 { 12193 {
12194 Kick(reason); 12194 Kick(reason);
12195 Thread.Sleep(1000); 12195 Thread.Sleep(1000);
12196 Close(); 12196 Disconnect();
12197 } 12197 }
12198 12198
12199 public void Disconnect() 12199 public void Disconnect()