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; } ///