Fixes disconnect when trying to login with a higher ping. Client will send multi proto packets in same packet.
This commit is contained in:
@@ -10,6 +10,7 @@ using Framework.Realm;
|
||||
using Google.Protobuf;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
|
||||
namespace BNetServer.Networking
|
||||
@@ -92,11 +93,18 @@ namespace BNetServer.Networking
|
||||
if (!IsOpen())
|
||||
return;
|
||||
|
||||
var stream = new CodedInputStream(data, 0, receivedLength);
|
||||
while (!stream.IsAtEnd)
|
||||
int readPos = 0;
|
||||
while (readPos < receivedLength)
|
||||
{
|
||||
var header = new Header();
|
||||
stream.ReadMessage(header);
|
||||
var headerLength = (ushort)IPAddress.HostToNetworkOrder(BitConverter.ToInt16(data, readPos));
|
||||
readPos += 2;
|
||||
|
||||
Header header = new();
|
||||
header.MergeFrom(data, readPos, headerLength);
|
||||
readPos += headerLength;
|
||||
|
||||
var stream = new CodedInputStream(data, readPos, (int)header.Size);
|
||||
readPos += (int)header.Size;
|
||||
|
||||
if (header.ServiceId != 0xFE && header.ServiceHash != 0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user