@@ -978,19 +978,13 @@ private void ParseCookieFromHeader(string headerValue)
978978 #region Загрузка тела сообщения
979979
980980 // ReSharper disable once ReturnTypeCanBeEnumerable.Local
981- private BytesWrapper [ ] GetMessageBodySource ( )
981+ private IEnumerable < BytesWrapper > GetMessageBodySource ( )
982982 {
983- bool isNonUtf8ContentEncoding =
984- _headers . ContainsKey ( "Content-Encoding" ) &&
985- // Yandex oauth fix
986- ! string . Equals ( _headers [ "Content-Encoding" ] , "utf-8" , StringComparison . OrdinalIgnoreCase ) ;
987-
988- var result = isNonUtf8ContentEncoding
983+ var result = _headers . ContainsKey ( "Content-Encoding" ) && _headers [ "Content-Encoding" ] . Equals ( "gzip" , StringComparison . OrdinalIgnoreCase )
989984 ? GetMessageBodySourceZip ( )
990985 : GetMessageBodySourceStd ( ) ;
991-
992- // It's a fix of response get stuck response issue #83: https://github.com/csharp-leaf/Leaf.xNet/issues/83
993- return result . ToArray ( ) ;
986+
987+ return result ; // .ToArray(); - it will break Chunked requests.
994988 }
995989
996990 // Загрузка обычных данных.
@@ -1016,7 +1010,27 @@ private IEnumerable<BytesWrapper> GetMessageBodySourceZip()
10161010 return ReceiveMessageBody ( GetZipStream ( streamWrapper ) ) ;
10171011 }
10181012
1013+ private static byte [ ] GetResponse ( Stream stream )
1014+ {
1015+ using ( var memoryStream = new MemoryStream ( ) )
1016+ {
1017+ stream . CopyTo ( memoryStream ) ;
1018+ return memoryStream . ToArray ( ) ;
1019+ }
1020+ }
1021+
10191022 // Загрузка тела сообщения неизвестной длины.
1023+ private static IEnumerable < BytesWrapper > ReceiveMessageBody ( Stream stream )
1024+ {
1025+ // It's a fix of response get stuck response issue #83: https://github.com/csharp-leaf/Leaf.xNet/issues/83
1026+ var bytesWrapper = new BytesWrapper ( ) ;
1027+ var responseBytes = GetResponse ( stream ) ;
1028+ bytesWrapper . Value = responseBytes ;
1029+ bytesWrapper . Length = responseBytes . Length ;
1030+ return new [ ] { bytesWrapper } ;
1031+ }
1032+
1033+ /*
10201034 private IEnumerable<BytesWrapper> ReceiveMessageBody(Stream stream)
10211035 {
10221036 var bytesWrapper = new BytesWrapper();
@@ -1087,6 +1101,7 @@ private IEnumerable<BytesWrapper> ReceiveMessageBody(Stream stream)
10871101 yield return bytesWrapper;
10881102 }
10891103 }
1104+ */
10901105
10911106 // Загрузка тела сообщения известной длины.
10921107 private IEnumerable < BytesWrapper > ReceiveMessageBody ( long contentLength )
0 commit comments