diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/ClientView.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.cs | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 31e0e29..34186de 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs | |||
@@ -199,38 +199,56 @@ namespace OpenSim.Region.ClientStack | |||
199 | 199 | ||
200 | # region Client Methods | 200 | # region Client Methods |
201 | 201 | ||
202 | public void Close() | 202 | private void CloseCleanup() |
203 | { | 203 | { |
204 | // Pull Client out of Region | ||
205 | MainLog.Instance.Verbose("CLIENT", "Close has been called"); | ||
206 | 204 | ||
207 | m_scene.RemoveClient(AgentId); | 205 | m_scene.RemoveClient(AgentId); |
208 | |||
209 | // Send the STOP packet | 206 | // Send the STOP packet |
210 | DisableSimulatorPacket disable = new DisableSimulatorPacket(); | 207 | DisableSimulatorPacket disable = new DisableSimulatorPacket(); |
211 | OutPacket(disable, ThrottleOutPacketType.Task); | 208 | OutPacket(disable, ThrottleOutPacketType.Task); |
212 | 209 | ||
210 | |||
213 | // FLUSH Packets | 211 | // FLUSH Packets |
214 | m_packetQueue.Close(); | 212 | m_packetQueue.Close(); |
215 | m_packetQueue.Flush(); | 213 | m_packetQueue.Flush(); |
216 | 214 | ||
217 | Thread.Sleep(2000); | 215 | Thread.Sleep(2000); |
218 | 216 | ||
217 | |||
218 | |||
219 | |||
220 | |||
219 | // Shut down timers | 221 | // Shut down timers |
220 | m_ackTimer.Stop(); | 222 | m_ackTimer.Stop(); |
221 | m_clientPingTimer.Stop(); | 223 | m_clientPingTimer.Stop(); |
222 | 224 | ||
223 | // This is just to give the client a reasonable chance of | 225 | // This is just to give the client a reasonable chance of |
224 | // flushing out all it's packets. There should probably | 226 | // flushing out all it's packets. There should probably |
225 | // be a better mechanism here | 227 | // be a better mechanism here |
226 | 228 | ||
227 | // We can't reach into other scenes and close the connection | 229 | // We can't reach into other scenes and close the connection |
228 | // We need to do this over grid communications | 230 | // We need to do this over grid communications |
229 | m_scene.CloseAllAgents(CircuitCode); | 231 | //m_scene.CloseAllAgents(CircuitCode); |
230 | 232 | ||
231 | m_clientThread.Abort(); | 233 | m_clientThread.Abort(); |
232 | } | 234 | } |
233 | 235 | ||
236 | public void Close(bool ShutdownCircult) | ||
237 | { | ||
238 | |||
239 | // Pull Client out of Region | ||
240 | MainLog.Instance.Verbose("CLIENT", "Close has been called"); | ||
241 | |||
242 | //raiseevent on the packet server to Shutdown the circuit | ||
243 | if (ShutdownCircult) | ||
244 | OnConnectionClosed(this); | ||
245 | |||
246 | |||
247 | CloseCleanup(); | ||
248 | |||
249 | |||
250 | } | ||
251 | |||
234 | public void Kick(string message) | 252 | public void Kick(string message) |
235 | { | 253 | { |
236 | KickUserPacket kupack = new KickUserPacket(); | 254 | KickUserPacket kupack = new KickUserPacket(); |
@@ -2214,7 +2232,7 @@ namespace OpenSim.Region.ClientStack | |||
2214 | "ClientView.m_packetQueue.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " + | 2232 | "ClientView.m_packetQueue.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " + |
2215 | m_userEndPoint.ToString() + " - killing thread"); | 2233 | m_userEndPoint.ToString() + " - killing thread"); |
2216 | MainLog.Instance.Error(e.ToString()); | 2234 | MainLog.Instance.Error(e.ToString()); |
2217 | Close(); | 2235 | Close(true); |
2218 | } | 2236 | } |
2219 | } | 2237 | } |
2220 | 2238 | ||