From 3ba63dde6ef773602a6c8ffa11d034a59a73f057 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 13 Jun 2017 12:17:39 +0100 Subject: [PATCH] udp is not tcp. If mono versions have bronke udp sento, better update, also having 300 threads because object select is not funny --- .../ClientStack/Linden/UDP/LLClientView.cs | 4 ++-- .../ClientStack/Linden/UDP/LLUDPServer.cs | 6 +++-- .../ClientStack/Linden/UDP/OpenSimUDPBase.cs | 22 ++++++++++++++++++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 1091078243..f13b2592ad 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -6036,8 +6036,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP AddLocalPacketHandler(PacketType.ObjectExtraParams, HandleObjectExtraParams); AddLocalPacketHandler(PacketType.ObjectDuplicate, HandleObjectDuplicate); AddLocalPacketHandler(PacketType.RequestMultipleObjects, HandleRequestMultipleObjects); - AddLocalPacketHandler(PacketType.ObjectSelect, HandleObjectSelect); - AddLocalPacketHandler(PacketType.ObjectDeselect, HandleObjectDeselect); + AddLocalPacketHandler(PacketType.ObjectSelect, HandleObjectSelect, true, true); + AddLocalPacketHandler(PacketType.ObjectDeselect, HandleObjectDeselect, true, true); AddLocalPacketHandler(PacketType.ObjectPosition, HandleObjectPosition); AddLocalPacketHandler(PacketType.ObjectScale, HandleObjectScale); AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation); diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index 9aa184514d..171e1cf5a0 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs @@ -1222,7 +1222,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP outgoingPacket.SequenceNumber, isReliable, isResend, udpClient.AgentID, Scene.Name); // Put the UDP payload on the wire - AsyncBeginSend(buffer); +// AsyncBeginSend(buffer); + SyncSend(buffer); // Keep track of when this packet was sent out (right now) outgoingPacket.TickCount = Environment.TickCount & Int32.MaxValue; @@ -1907,7 +1908,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP Buffer.BlockCopy(packetData, 0, buffer.Data, 0, length); - AsyncBeginSend(buffer); +// AsyncBeginSend(buffer); + SyncSend(buffer); } protected bool IsClientAuthorized(UseCircuitCodePacket useCircuitCode, out AuthenticateResponse sessionInfo) diff --git a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs index c360f43480..8dd96d65d6 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs @@ -487,7 +487,7 @@ namespace OpenMetaverse } catch (SocketException) { } catch (ObjectDisposedException) { } -// } + // } } void AsyncEndSend(IAsyncResult result) @@ -502,5 +502,25 @@ namespace OpenMetaverse catch (SocketException) { } catch (ObjectDisposedException) { } } + + public void SyncSend(UDPPacketBuffer buf) + { + try + { + m_udpSocket.SendTo( + buf.Data, + 0, + buf.DataLength, + SocketFlags.None, + buf.RemoteEndPoint + ); + UdpSends++; + } + catch (SocketException e) + { + m_log.Warn("[UDPBASE]: sync send SocketException {0} " + e.Message); + } + catch (ObjectDisposedException) { } + } } }