mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
Fix network reading incomplete strings
Very long strings are partially read using a single read. Added a loop. Fixed version number and year in assembly infos.
This commit is contained in:
parent
879c124d6a
commit
99e25982c9
2 changed files with 13 additions and 9 deletions
|
|
@ -218,8 +218,7 @@ namespace MinecraftClient
|
||||||
{
|
{
|
||||||
byte[] cache = new byte[length];
|
byte[] cache = new byte[length];
|
||||||
Receive(cache, 0, length, SocketFlags.None);
|
Receive(cache, 0, length, SocketFlags.None);
|
||||||
string result = Encoding.UTF8.GetString(cache);
|
return Encoding.UTF8.GetString(cache);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
else return "";
|
else return "";
|
||||||
}
|
}
|
||||||
|
|
@ -363,11 +362,15 @@ namespace MinecraftClient
|
||||||
private void setEncryptedClient(Crypto.IAesStream n) { s = n; encrypted = true; }
|
private void setEncryptedClient(Crypto.IAesStream n) { s = n; encrypted = true; }
|
||||||
private void Receive(byte[] buffer, int start, int offset, SocketFlags f)
|
private void Receive(byte[] buffer, int start, int offset, SocketFlags f)
|
||||||
{
|
{
|
||||||
if (encrypted)
|
int read = 0;
|
||||||
|
while (read < offset)
|
||||||
{
|
{
|
||||||
s.Read(buffer, start, offset);
|
if (encrypted)
|
||||||
|
{
|
||||||
|
read += s.Read(buffer, start + read, offset - read);
|
||||||
|
}
|
||||||
|
else read += c.Client.Receive(buffer, start + read, offset - read, f);
|
||||||
}
|
}
|
||||||
else c.Client.Receive(buffer, start, offset, f);
|
|
||||||
}
|
}
|
||||||
private void Send(byte[] buffer)
|
private void Send(byte[] buffer)
|
||||||
{
|
{
|
||||||
|
|
@ -400,6 +403,7 @@ namespace MinecraftClient
|
||||||
}
|
}
|
||||||
|
|
||||||
TcpClient tcp = new TcpClient(host, port);
|
TcpClient tcp = new TcpClient(host, port);
|
||||||
|
tcp.ReceiveBufferSize = 1024 * 1024;
|
||||||
|
|
||||||
byte[] packet_id = getVarInt(0);
|
byte[] packet_id = getVarInt(0);
|
||||||
byte[] protocol_version = getVarInt(4);
|
byte[] protocol_version = getVarInt(4);
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("MinecraftClient")]
|
[assembly: AssemblyProduct("MinecraftClient")]
|
||||||
[assembly: AssemblyCopyright("Copyright © ORelio 2012-2013")]
|
[assembly: AssemblyCopyright("Copyright © ORelio 2012-2014")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
|
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.6.1")]
|
[assembly: AssemblyVersion("1.7.3")]
|
||||||
[assembly: AssemblyFileVersion("1.6.1")]
|
[assembly: AssemblyFileVersion("1.7.3")]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue