diff --git a/OpenSim/Framework/Servers/BaseHttpServer.cs b/OpenSim/Framework/Servers/BaseHttpServer.cs index dc540f9280..e61cc804fb 100644 --- a/OpenSim/Framework/Servers/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/BaseHttpServer.cs @@ -154,8 +154,16 @@ namespace OpenSim.Framework.Servers request.InputStream.Close(); response.ContentType = requestHandler.ContentType; response.ContentLength64 = buffer.LongLength; - response.OutputStream.Write(buffer, 0, buffer.Length); - response.OutputStream.Close(); + + try + { + response.OutputStream.Write(buffer, 0, buffer.Length); + response.OutputStream.Close(); + } + catch (HttpListenerException e) + { + m_log.InfoFormat("[BASEHTTPSERVER] Http request abnormally terminated."); + } } else { diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 8220ae8c32..346bafc246 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs @@ -336,7 +336,7 @@ namespace OpenSim.Region.ClientStack # region Client Methods - private void CloseCleanup(bool ShutdownCircult) + private void CloseCleanup(bool shutdownCircuit) { m_scene.RemoveClient(AgentId); @@ -347,10 +347,7 @@ namespace OpenSim.Region.ClientStack DisableSimulatorPacket disable = (DisableSimulatorPacket)PacketPool.Instance.GetPacket(PacketType.DisableSimulator); OutPacket(disable, ThrottleOutPacketType.Task); - - // FLUSH Packets m_packetQueue.Close(); - m_packetQueue.Flush(); Thread.Sleep(2000); @@ -370,7 +367,7 @@ namespace OpenSim.Region.ClientStack // If we're not shutting down the circuit, then this is the last time we'll go here. // If we are shutting down the circuit, the UDP Server will come back here with // ShutDownCircuit = false - if (!(ShutdownCircult)) + if (!(shutdownCircuit)) { GC.Collect(); m_clientThread.Abort(); @@ -381,17 +378,19 @@ namespace OpenSim.Region.ClientStack /// Close down the client view. This *must* be the last method called, since the last # /// statement of CloseCleanup() aborts the thread. /// - /// - public void Close(bool ShutdownCircult) + /// + public void Close(bool shutdownCircuit) { // Pull Client out of Region m_log.Info("[CLIENT]: Close has been called"); //raiseevent on the packet server to Shutdown the circuit - if (ShutdownCircult) + if (shutdownCircuit) + { OnConnectionClosed(this); + } - CloseCleanup(ShutdownCircult); + CloseCleanup(shutdownCircuit); } public void Kick(string message) @@ -503,7 +502,7 @@ namespace OpenSim.Region.ClientStack protected virtual void ClientLoop() { m_log.Info("[CLIENT]: Entered loop"); - while (true) + while( true ) { QueItem nextPacket = m_packetQueue.Dequeue(); if (nextPacket.Incoming) @@ -583,7 +582,6 @@ namespace OpenSim.Region.ClientStack { //session/circuit not authorised m_log.Info("[CLIENT]: New user request denied to " + m_userEndPoint.ToString()); - m_packetQueue.Flush(); m_packetQueue.Close(); m_clientThread.Abort(); } @@ -1082,7 +1080,7 @@ namespace OpenSim.Region.ClientStack StartPingCheckPacket pc = (StartPingCheckPacket)PacketPool.Instance.GetPacket(PacketType.StartPingCheck); pc.PingID.PingID = seq; pc.Header.Reliable = false; - OutPacket(pc, ThrottleOutPacketType.Task); + OutPacket(pc, ThrottleOutPacketType.Unknown); } public void SendKillObject(ulong regionHandle, uint localID) diff --git a/OpenSim/Region/ClientStack/PacketQueue.cs b/OpenSim/Region/ClientStack/PacketQueue.cs index 4673082699..1a8450f1f3 100644 --- a/OpenSim/Region/ClientStack/PacketQueue.cs +++ b/OpenSim/Region/ClientStack/PacketQueue.cs @@ -182,7 +182,7 @@ namespace OpenSim.Region.ClientStack return SendQueue.Dequeue(); } - public void Flush() + private void Flush() { lock (this) { @@ -224,6 +224,8 @@ namespace OpenSim.Region.ClientStack public void Close() { + Flush(); + m_enabled = false; throttleTimer.Stop(); diff --git a/OpenSim/Region/Environment/Modules/ChatModule.cs b/OpenSim/Region/Environment/Modules/ChatModule.cs index c146941beb..b118257d8f 100644 --- a/OpenSim/Region/Environment/Modules/ChatModule.cs +++ b/OpenSim/Region/Environment/Modules/ChatModule.cs @@ -161,7 +161,6 @@ namespace OpenSim.Region.Environment.Modules } client.OnLogout += ClientLoggedOut; client.OnConnectionClosed += ClientLoggedOut; - //client.OnDisconnectUser += ClientLoggedOut; client.OnLogout += ClientLoggedOut; } catch (Exception ex) diff --git a/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs b/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs index 1ac6ad227d..c325746644 100644 --- a/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs +++ b/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs @@ -115,7 +115,7 @@ namespace OpenSim.Region.Environment.Modules /// texture sender for processing. /// /// - /// + /// public void TextureCallback(LLUUID textureID, AssetBase texture) { lock (m_textureSenders) @@ -124,7 +124,17 @@ namespace OpenSim.Region.Environment.Modules if (m_textureSenders.TryGetValue(textureID, out textureSender)) { - if (null != texture) + if (texture == null) + { + // Right now, leaving it up to lower level asset server code to post the fact that + // this texture could not be found + + // TODO Send packet back to the client telling it not to expect the texture + + //m_log.DebugFormat("[USER TEXTURE DOWNLOAD]: Removing download stat for {0}", textureID); + m_scene.AddPendingDownloads(-1); + } + else { if (!textureSender.ImageLoaded) { @@ -132,17 +142,7 @@ namespace OpenSim.Region.Environment.Modules EnqueueTextureSender(textureSender); } } - else - { - // Right now, leaving it up to lower level asset server code to post the fact that - // this texture could not be found - - // TODO Send packet back to the client telling it not to expect the texture - - //m_log.DebugFormat("[USER TEXTURE DOWNLOAD]: Removing download stat for {0}", textureID); - m_scene.AddPendingDownloads(-1); - } - + //m_log.InfoFormat("[TEXTURE SENDER] Removing texture sender with uuid {0}", textureID); m_textureSenders.Remove(textureID); //m_log.InfoFormat("[TEXTURE SENDER] Current texture senders in dictionary: {0}", m_textureSenders.Count); diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 4f44d3607b..1088fc18d0 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -1397,7 +1397,7 @@ namespace OpenSim.Region.Environment.Scenes client.OnRegionInfoRequest += m_estateManager.HandleRegionInfoRequest; client.OnEstateCovenantRequest += m_estateManager.HandleEstateCovenantRequest; client.OnRequestGodlikePowers += handleRequestGodlikePowers; - client.OnGodKickUser += handleGodlikeKickUser; + client.OnGodKickUser += HandleGodlikeKickUser; client.OnObjectPermissions += HandleObjectPermissionsUpdate; client.OnCreateNewInventoryItem += CreateNewInventoryItem; @@ -2188,7 +2188,7 @@ namespace OpenSim.Region.Environment.Scenes /// the person that is being kicked /// This isn't used apparently /// The message to send to the user after it's been turned into a field - public void handleGodlikeKickUser(LLUUID godID, LLUUID sessionID, LLUUID agentID, uint kickflags, byte[] reason) + public void HandleGodlikeKickUser(LLUUID godID, LLUUID sessionID, LLUUID agentID, uint kickflags, byte[] reason) { // For some reason the client sends this seemingly hard coded UUID for kicking everyone. Dun-know. LLUUID kickUserID = new LLUUID("44e87126e7944ded05b37c42da3d5cdb");