Skip to content

Commit 69103e0

Browse files
committed
Fix checksum problem at relayed ACK.
1 parent ab001cd commit 69103e0

File tree

28 files changed

+190
-41
lines changed

28 files changed

+190
-41
lines changed

sandbox/Dev/Client/Assets/Plugins/EuNet/Runtime/EuNet.Core/Channel/ReliableChannel.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,31 @@ public bool SendPendingPacket()
147147
if (_sendAcks == true)
148148
{
149149
_sendAcks = false;
150-
_udpChannel.SendTo(_ackPacket.RawData, 0, _ackPacket.Size, UdpChannel.SendMode.Buffered);
150+
151+
IPacketFilter filter = _channelOption.PacketFilter;
152+
if(filter != null)
153+
{
154+
var poolingPacket = NetPool.PacketPool.Alloc(_ackPacket, 0);
155+
try
156+
{
157+
158+
while (filter != null)
159+
{
160+
poolingPacket = filter.Encode(poolingPacket);
161+
filter = filter.NextFilter;
162+
}
163+
164+
_udpChannel.SendTo(poolingPacket.RawData, 0, poolingPacket.Size, UdpChannel.SendMode.Buffered);
165+
}
166+
finally
167+
{
168+
NetPool.PacketPool.Free(poolingPacket);
169+
}
170+
}
171+
else
172+
{
173+
_udpChannel.SendTo(_ackPacket.RawData, 0, _ackPacket.Size, UdpChannel.SendMode.Buffered);
174+
}
151175
}
152176
}
153177
}

sandbox/Dev/Client/Assets/Plugins/EuNet/Runtime/EuNet.Core/Channel/SequencedChannel.cs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,30 @@ public bool SendPendingPacket()
120120
_mustSendAck = false;
121121
_ackPacket.Sequence = _remoteSequence;
122122

123-
_udpChannel.SendTo(_ackPacket.RawData, 0, _ackPacket.Size, UdpChannel.SendMode.Buffered);
123+
IPacketFilter filter = _channelOption.PacketFilter;
124+
if (filter != null)
125+
{
126+
var poolingPacket = NetPool.PacketPool.Alloc(_ackPacket, 0);
127+
try
128+
{
129+
130+
while (filter != null)
131+
{
132+
poolingPacket = filter.Encode(poolingPacket);
133+
filter = filter.NextFilter;
134+
}
135+
136+
_udpChannel.SendTo(poolingPacket.RawData, 0, poolingPacket.Size, UdpChannel.SendMode.Buffered);
137+
}
138+
finally
139+
{
140+
NetPool.PacketPool.Free(poolingPacket);
141+
}
142+
}
143+
else
144+
{
145+
_udpChannel.SendTo(_ackPacket.RawData, 0, _ackPacket.Size, UdpChannel.SendMode.Buffered);
146+
}
124147
}
125148

126149
return true;

sandbox/Dev/Client/Assets/Plugins/EuNet/Runtime/EuNet.Core/PacketFilter/TeaPacketFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public NetPacket Decode(NetPacket packet)
5656
byte checksum = GetChecksum(data, headerSize, size - headerSize);
5757

5858
if (InitChecksumValue != checksum)
59-
throw new Exception("not match packet checksum");
59+
throw new Exception($"Not match packet checksum [{packet.Property}]");
6060

6161
return packet;
6262
}

sandbox/Dev/Client/Assets/Plugins/EuNet/Runtime/EuNet.Core/PacketFilter/XorPacketFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public NetPacket Decode(NetPacket packet)
5151
byte checksum = GetChecksum(data, headerSize, size - headerSize);
5252

5353
if (InitChecksumValue != checksum)
54-
throw new Exception("not match packet checksum");
54+
throw new Exception($"Not match packet checksum [{packet.Property}]");
5555

5656
packet.Size -= 1;
5757

sandbox/Dev/Client/Assets/Plugins/EuNet/Runtime/EuNet.Unity/NetClientP2pBehaviour.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ protected override void Awake()
3737

3838
protected override void Start()
3939
{
40-
base.Start();
41-
4240
_clientOption.IsServiceUdp = true;
4341
_clientOption.UdpServerAddress = ServerAddress;
4442
_clientOption.UdpServerPort = UdpServerPort;

sandbox/Dev/Client/Assets/Plugins/EuNet/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "com.zestylife.eunet",
33
"displayName": "EuNet",
4-
"version": "1.1.11",
4+
"version": "1.1.12",
55
"unity": "2018.4",
66
"description": "Easy Unity Network (EuNet) is a network solution for multiplayer games.",
77
"keywords": [ "P2P", "HolePunching", "RPC", "RELAY" ],

sandbox/Dev/Client/Assets/Scenes/Login.unity

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ MonoBehaviour:
537537
m_EditorClassIdentifier:
538538
_isDontDestroyOnLoad: 1
539539
LogLevel: 3
540-
ServerAddress: 220.120.190.34
540+
ServerAddress: 220.120.190.48
541541
TcpServerPort: 12000
542542
IsCheckAlive: 1
543543
CheckAliveInterval: 40000

sandbox/Dev/Client/Assets/Scripts/Network/GameClient.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,16 @@ protected override void Awake()
2020
base.Awake();
2121

2222
_client = GetComponent<NetClientP2pBehaviour>();
23+
_client.SetClientOptionFunc = (clientOption) =>
24+
{
25+
clientOption.PacketFilter = new XorPacketFilter(1);
26+
};
27+
28+
CustomResolver.Register(GeneratedResolver.Instance);
29+
}
2330

31+
private void Start()
32+
{
2433
Client.OnConnected = OnConnected;
2534
Client.OnClosed = OnClosed;
2635
Client.OnReceived = OnReceive;
@@ -32,8 +41,6 @@ protected override void Awake()
3241
// 자동으로 생성된 Rpc 서비스를 사용하기 위해 등록함
3342
Client.AddRpcService(new ActorViewRpcServiceView());
3443
Client.AddRpcService(new ActorScaleRpcServiceView());
35-
36-
CustomResolver.Register(GeneratedResolver.Instance);
3744
}
3845

3946
private void OnConnected()

sandbox/Dev/Server/Server.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public async Task Start()
3737
IsCheckAlive = true,
3838
CheckAliveInterval = 50000,
3939
CheckAliveTimeout = 60000,
40+
PacketFilter = new XorPacketFilter(1)
4041
};
4142

4243
// 로거 팩토리를 생성

src/EuNet.Client/EuNet.Client.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
66
<Authors>zestylife</Authors>
77
<Company></Company>
8-
<Version>1.1.11</Version>
8+
<Version>1.1.12</Version>
99
<Copyright></Copyright>
1010
<PackageProjectUrl>https://github.com/zestylife/EuNet</PackageProjectUrl>
1111
<RepositoryUrl>https://github.com/zestylife/EuNet</RepositoryUrl>

0 commit comments

Comments
 (0)