Update FishNet
This commit is contained in:
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Channels.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/ConnectionStates.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/EventStructures.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/IPAddressType.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/NetworkReaderLoop.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/NetworkWriterLoop.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/PacketId.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transport.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/TransportConsts.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Multipass/CHANGELOG.txt
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Multipass/Multipass.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Multipass/VERSION.txt
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -94,7 +94,7 @@ namespace FishNet.Transporting.Tugboat.Client
|
||||
|
||||
NetManager = new(listener, _packetLayer, false);
|
||||
NetManager.DontRoute = ((Tugboat)Transport).DontRoute;
|
||||
NetManager.MtuOverride = _mtu + NetConstants.FragmentedHeaderTotalSize;
|
||||
NetManager.MtuOverride = _mtu;// + NetConstants.FragmentedHeaderTotalSize;
|
||||
|
||||
UpdateTimeout(_timeout);
|
||||
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Core/ClientSocket.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Core/CommonSocket.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -132,8 +132,8 @@ namespace FishNet.Transporting.Tugboat.Server
|
||||
NetManager = new(listener, _packetLayer, false);
|
||||
NetManager.DontRoute = ((Tugboat)Transport).DontRoute;
|
||||
NetManager.ReuseAddress = ((Tugboat)Transport).ReuseAddress;
|
||||
NetManager.MtuOverride = _mtu + NetConstants.FragmentedHeaderTotalSize;
|
||||
|
||||
NetManager.MtuOverride = _mtu;// + NetConstants.FragmentedHeaderTotalSize;
|
||||
|
||||
UpdateTimeout(_timeout);
|
||||
|
||||
// Set bind addresses.
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Core/ServerSocket.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Core/Supporting.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -12,7 +12,6 @@ namespace FishNet.Transporting.Tugboat.Editing
|
||||
private SerializedProperty _stopSocketsOnThread;
|
||||
private SerializedProperty _dontRoute;
|
||||
private SerializedProperty _reuseAddress;
|
||||
private SerializedProperty _unreliableMtu;
|
||||
private SerializedProperty _ipv4BindAddress;
|
||||
private SerializedProperty _enableIpv6;
|
||||
private SerializedProperty _ipv6BindAddress;
|
||||
@@ -25,7 +24,6 @@ namespace FishNet.Transporting.Tugboat.Editing
|
||||
_stopSocketsOnThread = serializedObject.FindProperty(nameof(_stopSocketsOnThread));
|
||||
_dontRoute = serializedObject.FindProperty(nameof(_dontRoute));
|
||||
_reuseAddress = serializedObject.FindProperty(nameof(_reuseAddress));
|
||||
_unreliableMtu = serializedObject.FindProperty(nameof(_unreliableMtu));
|
||||
_ipv4BindAddress = serializedObject.FindProperty(nameof(_ipv4BindAddress));
|
||||
_enableIpv6 = serializedObject.FindProperty(nameof(_enableIpv6));
|
||||
_ipv6BindAddress = serializedObject.FindProperty(nameof(_ipv6BindAddress));
|
||||
@@ -50,12 +48,6 @@ namespace FishNet.Transporting.Tugboat.Editing
|
||||
EditorGUI.indentLevel--;
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.LabelField("Channels", EditorStyles.boldLabel);
|
||||
EditorGUI.indentLevel++;
|
||||
EditorGUILayout.PropertyField(_unreliableMtu);
|
||||
EditorGUI.indentLevel--;
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.LabelField("Server", EditorStyles.boldLabel);
|
||||
EditorGUI.indentLevel++;
|
||||
EditorGUILayout.PropertyField(_reuseAddress);
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Editor/TugboatEditor.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/BaseChannel.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/ConnectionRequest.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/INetEventListener.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/InternalPackets.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Layers/Crc32cLayer.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Layers/PacketLayerBase.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Layers/XorEncryptLayer.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/LiteNetLib.csproj
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NatPunchModule.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NativeSocket.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NetConstants.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NetDebug.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NetManager.HashSet.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NetManager.PacketPool.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NetManager.Socket.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NetManager.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NetPacket.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -90,19 +90,6 @@ namespace LiteNetLib
|
||||
private const int MaxMtuCheckAttempts = 4;
|
||||
private readonly object _mtuMutex = new();
|
||||
|
||||
// Fragment
|
||||
private class IncomingFragments
|
||||
{
|
||||
public NetPacket[] Fragments;
|
||||
public int ReceivedCount;
|
||||
public int TotalSize;
|
||||
public byte ChannelId;
|
||||
}
|
||||
|
||||
private int _fragmentId;
|
||||
private readonly Dictionary<ushort, IncomingFragments> _holdedFragments;
|
||||
private readonly Dictionary<ushort, ushort> _deliveredFragments;
|
||||
|
||||
// Merging
|
||||
private readonly NetPacket _mergeData;
|
||||
private int _mergePos;
|
||||
@@ -220,8 +207,6 @@ namespace LiteNetLib
|
||||
_pingPacket = new(PacketProperty.Ping, 0) { Sequence = 1 };
|
||||
|
||||
_unreliableChannel = new();
|
||||
_holdedFragments = new();
|
||||
_deliveredFragments = new();
|
||||
|
||||
_channels = new BaseChannel[netManager.ChannelsCount * NetConstants.ChannelTypeCount];
|
||||
_channelSendQueue = new();
|
||||
@@ -639,44 +624,8 @@ namespace LiteNetLib
|
||||
int mtu = Mtu;
|
||||
if (length + headerSize > mtu)
|
||||
{
|
||||
// if cannot be fragmented
|
||||
if (deliveryMethod != DeliveryMethod.ReliableOrdered && deliveryMethod != DeliveryMethod.ReliableUnordered)
|
||||
throw new TooBigPacketException("Unreliable or ReliableSequenced packet size exceeded maximum of " + (mtu - headerSize) + " bytes, Check allowed size by GetMaxSinglePacketSize()");
|
||||
|
||||
int packetFullSize = mtu - headerSize;
|
||||
int packetDataSize = packetFullSize - NetConstants.FragmentHeaderSize;
|
||||
int totalPackets = length / packetDataSize + (length % packetDataSize == 0 ? 0 : 1);
|
||||
|
||||
NetDebug.Write($@"FragmentSend:
|
||||
MTU: {mtu}
|
||||
headerSize: {headerSize}
|
||||
packetFullSize: {packetFullSize}
|
||||
packetDataSize: {packetDataSize}
|
||||
totalPackets: {totalPackets}");
|
||||
|
||||
if (totalPackets > ushort.MaxValue)
|
||||
throw new TooBigPacketException("Data was split in " + totalPackets + " fragments, which exceeds " + ushort.MaxValue);
|
||||
|
||||
ushort currentFragmentId = (ushort)Interlocked.Increment(ref _fragmentId);
|
||||
|
||||
for (ushort partIdx = 0; partIdx < totalPackets; partIdx++)
|
||||
{
|
||||
int sendLength = length > packetDataSize ? packetDataSize : length;
|
||||
|
||||
NetPacket p = NetManager.PoolGetPacket(headerSize + sendLength + NetConstants.FragmentHeaderSize);
|
||||
p.Property = property;
|
||||
p.UserData = userData;
|
||||
p.FragmentId = currentFragmentId;
|
||||
p.FragmentPart = partIdx;
|
||||
p.FragmentsTotal = (ushort)totalPackets;
|
||||
p.MarkFragmented();
|
||||
|
||||
Buffer.BlockCopy(data, start + partIdx * packetDataSize, p.RawData, NetConstants.FragmentedHeaderTotalSize, sendLength);
|
||||
channel.AddToQueue(p);
|
||||
|
||||
length -= sendLength;
|
||||
}
|
||||
return;
|
||||
NetDebug.WriteError($"Packet size {length + headerSize} exceeds MTU {mtu}. Fragmentation is disabled.");
|
||||
throw new TooBigPacketException($"Packet size {length + headerSize} exceeded MTU {mtu}. LNL Fragmentation was removed.");
|
||||
}
|
||||
|
||||
// Else just send
|
||||
@@ -783,37 +732,8 @@ namespace LiteNetLib
|
||||
int length = data.Length;
|
||||
if (length + headerSize > mtu)
|
||||
{
|
||||
// if cannot be fragmented
|
||||
if (deliveryMethod != DeliveryMethod.ReliableOrdered && deliveryMethod != DeliveryMethod.ReliableUnordered)
|
||||
throw new TooBigPacketException("Unreliable or ReliableSequenced packet size exceeded maximum of " + (mtu - headerSize) + " bytes, Check allowed size by GetMaxSinglePacketSize()");
|
||||
|
||||
int packetFullSize = mtu - headerSize;
|
||||
int packetDataSize = packetFullSize - NetConstants.FragmentHeaderSize;
|
||||
int totalPackets = length / packetDataSize + (length % packetDataSize == 0 ? 0 : 1);
|
||||
|
||||
if (totalPackets > ushort.MaxValue)
|
||||
throw new TooBigPacketException("Data was split in " + totalPackets + " fragments, which exceeds " + ushort.MaxValue);
|
||||
|
||||
ushort currentFragmentId = (ushort)Interlocked.Increment(ref _fragmentId);
|
||||
|
||||
for (ushort partIdx = 0; partIdx < totalPackets; partIdx++)
|
||||
{
|
||||
int sendLength = length > packetDataSize ? packetDataSize : length;
|
||||
|
||||
NetPacket p = NetManager.PoolGetPacket(headerSize + sendLength + NetConstants.FragmentHeaderSize);
|
||||
p.Property = property;
|
||||
p.UserData = userData;
|
||||
p.FragmentId = currentFragmentId;
|
||||
p.FragmentPart = partIdx;
|
||||
p.FragmentsTotal = (ushort)totalPackets;
|
||||
p.MarkFragmented();
|
||||
|
||||
data.Slice(partIdx * packetDataSize, sendLength).CopyTo(new(p.RawData, NetConstants.FragmentedHeaderTotalSize, sendLength));
|
||||
channel.AddToQueue(p);
|
||||
|
||||
length -= sendLength;
|
||||
}
|
||||
return;
|
||||
NetDebug.WriteError($"Packet size {length + headerSize} exceeds MTU {mtu}. Fragmentation is disabled.");
|
||||
throw new TooBigPacketException($"Packet size {length + headerSize} exceeded MTU {mtu}. LNL Fragmentation was removed.");
|
||||
}
|
||||
|
||||
// Else just send
|
||||
@@ -923,84 +843,12 @@ namespace LiteNetLib
|
||||
{
|
||||
if (p.IsFragmented)
|
||||
{
|
||||
NetDebug.Write($"Fragment. Id: {p.FragmentId}, Part: {p.FragmentPart}, Total: {p.FragmentsTotal}");
|
||||
//Get needed array from dictionary
|
||||
ushort packetFragId = p.FragmentId;
|
||||
byte packetChannelId = p.ChannelId;
|
||||
if (!_holdedFragments.TryGetValue(packetFragId, out IncomingFragments incomingFragments))
|
||||
{
|
||||
incomingFragments = new()
|
||||
{
|
||||
Fragments = new NetPacket[p.FragmentsTotal],
|
||||
ChannelId = p.ChannelId
|
||||
};
|
||||
_holdedFragments.Add(packetFragId, incomingFragments);
|
||||
}
|
||||
|
||||
//Cache
|
||||
NetPacket[] fragments = incomingFragments.Fragments;
|
||||
|
||||
//Error check
|
||||
if (p.FragmentPart >= fragments.Length || fragments[p.FragmentPart] != null || p.ChannelId != incomingFragments.ChannelId)
|
||||
{
|
||||
NetManager.PoolRecycle(p);
|
||||
NetDebug.WriteError("Invalid fragment packet");
|
||||
return;
|
||||
}
|
||||
//Fill array
|
||||
fragments[p.FragmentPart] = p;
|
||||
|
||||
//Increase received fragments count
|
||||
incomingFragments.ReceivedCount++;
|
||||
|
||||
//Increase total size
|
||||
incomingFragments.TotalSize += p.Size - NetConstants.FragmentedHeaderTotalSize;
|
||||
|
||||
//Check for finish
|
||||
if (incomingFragments.ReceivedCount != fragments.Length)
|
||||
return;
|
||||
|
||||
//just simple packet
|
||||
NetPacket resultingPacket = NetManager.PoolGetPacket(incomingFragments.TotalSize);
|
||||
|
||||
int pos = 0;
|
||||
for (int i = 0; i < incomingFragments.ReceivedCount; i++)
|
||||
{
|
||||
NetPacket fragment = fragments[i];
|
||||
int writtenSize = fragment.Size - NetConstants.FragmentedHeaderTotalSize;
|
||||
|
||||
if (pos + writtenSize > resultingPacket.RawData.Length)
|
||||
{
|
||||
_holdedFragments.Remove(packetFragId);
|
||||
NetDebug.WriteError($"Fragment error pos: {pos + writtenSize} >= resultPacketSize: {resultingPacket.RawData.Length} , totalSize: {incomingFragments.TotalSize}");
|
||||
return;
|
||||
}
|
||||
if (fragment.Size > fragment.RawData.Length)
|
||||
{
|
||||
_holdedFragments.Remove(packetFragId);
|
||||
NetDebug.WriteError($"Fragment error size: {fragment.Size} > fragment.RawData.Length: {fragment.RawData.Length}");
|
||||
return;
|
||||
}
|
||||
|
||||
//Create resulting big packet
|
||||
Buffer.BlockCopy(fragment.RawData, NetConstants.FragmentedHeaderTotalSize, resultingPacket.RawData, pos, writtenSize);
|
||||
pos += writtenSize;
|
||||
|
||||
//Free memory
|
||||
NetManager.PoolRecycle(fragment);
|
||||
fragments[i] = null;
|
||||
}
|
||||
|
||||
//Clear memory
|
||||
_holdedFragments.Remove(packetFragId);
|
||||
|
||||
//Send to process
|
||||
NetManager.CreateReceiveEvent(resultingPacket, method, (byte)(packetChannelId / NetConstants.ChannelTypeCount), 0, this);
|
||||
}
|
||||
else //Just simple packet
|
||||
{
|
||||
NetManager.CreateReceiveEvent(p, method, (byte)(p.ChannelId / NetConstants.ChannelTypeCount), NetConstants.ChanneledHeaderSize, this);
|
||||
NetDebug.WriteError("Fragmented packets are disabled. Dropping packet.");
|
||||
NetManager.PoolRecycle(p);
|
||||
return;
|
||||
}
|
||||
|
||||
NetManager.CreateReceiveEvent(p, method, (byte)(p.ChannelId / NetConstants.ChannelTypeCount), NetConstants.ChanneledHeaderSize, this);
|
||||
}
|
||||
|
||||
private void ProcessMtuPacket(NetPacket packet)
|
||||
@@ -1160,6 +1008,10 @@ namespace LiteNetLib
|
||||
while (pos < packet.Size)
|
||||
{
|
||||
ushort size = BitConverter.ToUInt16(packet.RawData, pos);
|
||||
if (size == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
pos += 2;
|
||||
if (packet.RawData.Length - pos < size)
|
||||
break;
|
||||
@@ -1397,27 +1249,10 @@ namespace LiteNetLib
|
||||
{
|
||||
if (packet.UserData != null)
|
||||
{
|
||||
if (packet.IsFragmented)
|
||||
{
|
||||
_deliveredFragments.TryGetValue(packet.FragmentId, out ushort fragCount);
|
||||
fragCount++;
|
||||
if (fragCount == packet.FragmentsTotal)
|
||||
{
|
||||
NetManager.MessageDelivered(this, packet.UserData);
|
||||
_deliveredFragments.Remove(packet.FragmentId);
|
||||
}
|
||||
else
|
||||
{
|
||||
_deliveredFragments[packet.FragmentId] = fragCount;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NetManager.MessageDelivered(this, packet.UserData);
|
||||
}
|
||||
NetManager.MessageDelivered(this, packet.UserData);
|
||||
packet.UserData = null;
|
||||
}
|
||||
NetManager.PoolRecycle(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NetPeer.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NetStatistics.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/NetUtils.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/PausedSocketFix.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/PooledPacket.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/ReliableChannel.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/SequencedChannel.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Trimming.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Utils/CRC32C.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Utils/FastBitConverter.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Utils/INetSerializable.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Utils/NetDataReader.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Utils/NetDataWriter.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Utils/NetPacketProcessor.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Utils/NetSerializer.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Utils/NtpPacket.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Utils/NtpRequest.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
+2
-2
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/Utils/Preserve.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/LiteNetLib/package.json
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
@@ -40,14 +40,6 @@ namespace FishNet.Transporting.Tugboat
|
||||
[Tooltip("Allows the same address and port to be used multiple times by the server. This can be useful if you wish to launch multiple builds or server instances on the same machine using the same configuration.")]
|
||||
[SerializeField]
|
||||
private bool _reuseAddress;
|
||||
/* Channels. */
|
||||
/// <summary>
|
||||
/// Maximum transmission unit for the unreliable channel.
|
||||
/// </summary>
|
||||
[Tooltip("Maximum transmission unit for the unreliable channel.")]
|
||||
[Range(MINIMUM_UDP_MTU, MAXIMUM_UDP_MTU)]
|
||||
[SerializeField]
|
||||
private int _unreliableMtu = 1023;
|
||||
/* Server. */
|
||||
/// <summary>
|
||||
/// IPv4 address to bind server to.
|
||||
@@ -118,13 +110,9 @@ namespace FishNet.Transporting.Tugboat
|
||||
/// </summary>
|
||||
private const ushort MAX_TIMEOUT_SECONDS = 1800;
|
||||
/// <summary>
|
||||
/// Minimum UDP packet size allowed.
|
||||
/// </summary>
|
||||
private const int MINIMUM_UDP_MTU = 576;
|
||||
/// <summary>
|
||||
/// Maximum UDP packet size allowed.
|
||||
/// </summary>
|
||||
private const int MAXIMUM_UDP_MTU = 1023;
|
||||
private const int MAXIMUM_UDP_MTU = 1350;
|
||||
#endregion
|
||||
|
||||
#region Initialization and unity.
|
||||
@@ -465,8 +453,8 @@ namespace FishNet.Transporting.Tugboat
|
||||
{
|
||||
if (server)
|
||||
return StartServer();
|
||||
else
|
||||
return StartClient(_clientAddress);
|
||||
|
||||
return StartClient(_clientAddress);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -477,8 +465,8 @@ namespace FishNet.Transporting.Tugboat
|
||||
{
|
||||
if (server)
|
||||
return StopServer();
|
||||
else
|
||||
return StopClient();
|
||||
|
||||
return StopClient();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -511,9 +499,9 @@ namespace FishNet.Transporting.Tugboat
|
||||
private void InitializeSocket(bool asServer)
|
||||
{
|
||||
if (asServer)
|
||||
ServerSocket.Initialize(this, _unreliableMtu, _packetLayer, _enableIpv6);
|
||||
ServerSocket.Initialize(this, MAXIMUM_UDP_MTU, _packetLayer, _enableIpv6);
|
||||
else
|
||||
ClientSocket.Initialize(this, _unreliableMtu, _packetLayer);
|
||||
ClientSocket.Initialize(this, MAXIMUM_UDP_MTU, _packetLayer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -533,8 +521,8 @@ namespace FishNet.Transporting.Tugboat
|
||||
{
|
||||
if (ServerSocket == null)
|
||||
return false;
|
||||
else
|
||||
return ServerSocket.StopConnection();
|
||||
|
||||
return ServerSocket.StopConnection();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -564,8 +552,8 @@ namespace FishNet.Transporting.Tugboat
|
||||
{
|
||||
if (ClientSocket == null)
|
||||
return false;
|
||||
else
|
||||
return ClientSocket.StopConnection();
|
||||
|
||||
return ClientSocket.StopConnection();
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
@@ -577,7 +565,7 @@ namespace FishNet.Transporting.Tugboat
|
||||
/// <param name = "channelId"></param>
|
||||
private void SanitizeChannel(ref byte channelId)
|
||||
{
|
||||
if (channelId < 0 || channelId >= TransportManager.CHANNEL_COUNT)
|
||||
if (channelId >= TransportManager.CHANNEL_COUNT)
|
||||
{
|
||||
NetworkManager.LogWarning($"Channel of {channelId} is out of range of supported channels. Channel will be defaulted to reliable.");
|
||||
channelId = 0;
|
||||
@@ -592,20 +580,8 @@ namespace FishNet.Transporting.Tugboat
|
||||
/// <returns></returns>
|
||||
public override int GetMTU(byte channel)
|
||||
{
|
||||
return _unreliableMtu;
|
||||
return MAXIMUM_UDP_MTU - NetConstants.MaxUdpHeaderSize;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Editor.
|
||||
#if UNITY_EDITOR
|
||||
private void OnValidate()
|
||||
{
|
||||
if (_unreliableMtu < 0)
|
||||
_unreliableMtu = MINIMUM_UDP_MTU;
|
||||
else if (_unreliableMtu > MAXIMUM_UDP_MTU)
|
||||
_unreliableMtu = MAXIMUM_UDP_MTU;
|
||||
}
|
||||
#endif
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 207815
|
||||
packageName: 'FishNet: Networking Evolved'
|
||||
packageVersion: 4.6.22R
|
||||
packageVersion: 4.7.1R
|
||||
assetPath: Assets/FishNet/Runtime/Transporting/Transports/Tugboat/Tugboat.cs
|
||||
uploadId: 866910
|
||||
uploadId: 892096
|
||||
|
||||
Reference in New Issue
Block a user