diff --git a/MinecraftClient/Protocol/Handlers/Protocol18.cs b/MinecraftClient/Protocol/Handlers/Protocol18.cs
index 0daf7b99..843572ab 100644
--- a/MinecraftClient/Protocol/Handlers/Protocol18.cs
+++ b/MinecraftClient/Protocol/Handlers/Protocol18.cs
@@ -1421,12 +1421,10 @@ namespace MinecraftClient.Protocol.Handlers
if (compression_treshold > 0) //Compression enabled?
{
- if (the_packet.Length > compression_treshold) //Packet long enough for compressing?
+ if (the_packet.Length >= compression_treshold) //Packet long enough for compressing?
{
- byte[] uncompressed_length = getVarInt(the_packet.Length);
byte[] compressed_packet = ZlibUtils.Compress(the_packet);
- byte[] compressed_packet_length = getVarInt(compressed_packet.Length);
- the_packet = concatBytes(compressed_packet_length, compressed_packet);
+ the_packet = concatBytes(getVarInt(the_packet.Length), compressed_packet);
}
else
{
diff --git a/MinecraftClient/Protocol/Handlers/ZlibUtils.cs b/MinecraftClient/Protocol/Handlers/ZlibUtils.cs
index 8265779d..e281bd31 100644
--- a/MinecraftClient/Protocol/Handlers/ZlibUtils.cs
+++ b/MinecraftClient/Protocol/Handlers/ZlibUtils.cs
@@ -21,17 +21,16 @@ namespace MinecraftClient.Protocol.Handlers
/// Compressed data as a byte array
public static byte[] Compress(byte[] to_compress)
{
- ZlibStream stream = new ZlibStream(new System.IO.MemoryStream(to_compress, false), CompressionMode.Compress);
- List temp_compression_list = new List();
- byte[] b = new byte[1];
- while (true)
+ byte[] data;
+ using (System.IO.MemoryStream memstream = new System.IO.MemoryStream())
{
- int read = stream.Read(b, 0, 1);
- if (read > 0) { temp_compression_list.Add(b[0]); }
- else break;
+ using (ZlibStream stream = new ZlibStream(memstream, CompressionMode.Compress))
+ {
+ stream.Write(to_compress, 0, to_compress.Length);
+ }
+ data = memstream.ToArray();
}
- stream.Close();
- return temp_compression_list.ToArray();
+ return data;
}
///