diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/UDP')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 15 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | 2 |
2 files changed, 8 insertions, 9 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index ee28914..6f00957 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++; |
@@ -12193,7 +12192,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
12193 | { | 12192 | { |
12194 | Kick(reason); | 12193 | Kick(reason); |
12195 | Thread.Sleep(1000); | 12194 | Thread.Sleep(1000); |
12196 | Close(); | 12195 | Disconnect(); |
12197 | } | 12196 | } |
12198 | 12197 | ||
12199 | public void Disconnect() | 12198 | public void Disconnect() |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index d6513c5..60ab70e 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | |||
@@ -1523,7 +1523,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1523 | if (!client.IsLoggingOut) | 1523 | if (!client.IsLoggingOut) |
1524 | { | 1524 | { |
1525 | client.IsLoggingOut = true; | 1525 | client.IsLoggingOut = true; |
1526 | client.Close(false); | 1526 | client.Close(false, false); |
1527 | } | 1527 | } |
1528 | } | 1528 | } |
1529 | } | 1529 | } |