1- #if NET6_0_OR_GREATER
2- using System . IO ;
1+ using System . IO ;
2+ #if NET6_0_OR_GREATER
33using System . IO . Compression ;
4+ #else
5+ using Org . BouncyCastle . Utilities . Zlib ;
6+ #endif
47
58namespace Renci . SshNet . Compression
69{
@@ -11,8 +14,13 @@ namespace Renci.SshNet.Compression
1114 public class Zlib : Compressor
1215#pragma warning restore CA1724 // Type names should not match namespaces
1316 {
17+ #if NET6_0_OR_GREATER
1418 private readonly ZLibStream _compressor ;
1519 private readonly ZLibStream _decompressor ;
20+ #else
21+ private readonly ZOutputStream _compressor ;
22+ private readonly ZOutputStream _decompressor ;
23+ #endif
1624 private MemoryStream _compressorStream ;
1725 private MemoryStream _decompressorStream ;
1826 private bool _isDisposed ;
@@ -37,8 +45,13 @@ protected Zlib(bool delayedCompression)
3745 _compressorStream = new MemoryStream ( ) ;
3846 _decompressorStream = new MemoryStream ( ) ;
3947
48+ #if NET6_0_OR_GREATER
4049 _compressor = new ZLibStream ( _compressorStream , CompressionMode . Compress ) ;
4150 _decompressor = new ZLibStream ( _decompressorStream , CompressionMode . Decompress ) ;
51+ #else
52+ _compressor = new ZOutputStream ( _compressorStream , level : JZlib . Z_DEFAULT_COMPRESSION ) { FlushMode = JZlib . Z_PARTIAL_FLUSH } ;
53+ _decompressor = new ZOutputStream ( _decompressorStream ) { FlushMode = JZlib . Z_PARTIAL_FLUSH } ;
54+ #endif
4255 }
4356
4457 /// <inheritdoc/>
@@ -61,6 +74,7 @@ protected override byte[] CompressCore(byte[] data, int offset, int length)
6174 /// <inheritdoc/>
6275 protected override byte [ ] DecompressCore ( byte [ ] data , int offset , int length )
6376 {
77+ #if NET6_0_OR_GREATER
6478 _decompressorStream . Write ( data , offset , length ) ;
6579 _decompressorStream . Position = 0 ;
6680
@@ -70,6 +84,14 @@ protected override byte[] DecompressCore(byte[] data, int offset, int length)
7084 _decompressorStream . SetLength ( 0 ) ;
7185
7286 return outputStream . ToArray ( ) ;
87+ #else
88+ _decompressorStream . SetLength ( 0 ) ;
89+
90+ _decompressor . Write ( data , offset , length ) ;
91+ _decompressor . Flush ( ) ;
92+
93+ return _decompressorStream . ToArray ( ) ;
94+ #endif
7395 }
7496
7597 /// <summary>
@@ -106,4 +128,3 @@ protected override void Dispose(bool disposing)
106128 }
107129 }
108130}
109- #endif
0 commit comments