private byte[] ReadNextPart(Stream targetStream, Func <byte[], Encoding, byte[]> decoder, Encoding useEncoding, byte[] boundaryMarker) { var addNewLine = false; while (true) { byte[] buffer; var chunkStop = ReadChunkOrLine(out buffer, BUFFER_SIZE); if (boundaryMarker != null && BufferStartsWith(buffer, boundaryMarker)) { return(buffer); } if (boundaryMarker != null && chunkStop == ChunkStop.EndOfStream) { throw XRoadException.MultipartManusegaSõnumiOotamatuLõpp(); } if (decoder != null) { buffer = decoder(buffer, useEncoding); } if (decoder == null && addNewLine) { targetStream.Write(newLine, 0, newLine.Length); } targetStream.Write(buffer, 0, buffer.Length); if (chunkStop == ChunkStop.EndOfStream) { return(buffer); } addNewLine = chunkStop == ChunkStop.NewLine; } }