Skip to content

Commit bffb2a1

Browse files
committed
Handle raw deflate response from some servers
1 parent e7ff21e commit bffb2a1

File tree

1 file changed

+12
-4
lines changed
  • src/Renci.SshNet/Compression

1 file changed

+12
-4
lines changed

src/Renci.SshNet/Compression/Zlib.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
#if NET6_0_OR_GREATER
2+
using System.Diagnostics;
3+
using System;
24
using System.IO;
35
using System.IO.Compression;
6+
using System.Threading.Tasks;
7+
using System.Threading;
48

59
namespace Renci.SshNet.Compression
610
{
@@ -28,20 +32,24 @@ public override string Name
2832
protected override byte[] CompressCore(byte[] data, int offset, int length)
2933
{
3034
using var outputStream = new MemoryStream();
31-
using var zlibStream = new ZLibStream(outputStream, CompressionMode.Compress);
35+
using var stream = new ZLibStream(outputStream, CompressionMode.Compress);
3236

33-
zlibStream.Write(data, offset, length);
37+
stream.Write(data, offset, length);
3438

3539
return outputStream.ToArray();
3640
}
3741

3842
protected override byte[] DecompressCore(byte[] data, int offset, int length)
3943
{
4044
using var inputStream = new MemoryStream(data, offset, length);
41-
using var zlibStream = new ZLibStream(inputStream, CompressionMode.Decompress);
45+
46+
// Handle raw deflate response from some servers
47+
using Stream stream = (data[offset] & 0xF) == 8 ?
48+
new ZLibStream(inputStream, CompressionMode.Decompress) :
49+
new DeflateStream(inputStream, CompressionMode.Decompress);
4250

4351
using var outputStream = new MemoryStream();
44-
zlibStream.CopyTo(outputStream);
52+
stream.CopyTo(outputStream);
4553

4654
return outputStream.ToArray();
4755
}

0 commit comments

Comments
 (0)