m
This commit is contained in:
@@ -0,0 +1,327 @@
|
||||
using System;
|
||||
using BestHTTP.Decompression.Zlib;
|
||||
using BestHTTP.Extensions;
|
||||
using BestHTTP.WebSocket.Frames;
|
||||
using Cpp2IlInjected;
|
||||
|
||||
namespace BestHTTP.WebSocket.Extensions
|
||||
{
|
||||
// Token: 0x020019B1 RID: 6577
|
||||
[Token(Token = "0x20019B1")]
|
||||
public sealed class PerMessageCompression : IExtension
|
||||
{
|
||||
// Token: 0x17001863 RID: 6243
|
||||
// (get) Token: 0x0600993C RID: 39228 RVA: 0x001F5018 File Offset: 0x001F3218
|
||||
// (set) Token: 0x0600993D RID: 39229 RVA: 0x001F502C File Offset: 0x001F322C
|
||||
[Token(Token = "0x17001863")]
|
||||
public bool ClientNoContextTakeover
|
||||
{
|
||||
[Token(Token = "0x600993C")]
|
||||
[Address(RVA = "0x4944B0", Offset = "0x4934B0", VA = "0x1804944B0")]
|
||||
get;
|
||||
[Token(Token = "0x600993D")]
|
||||
[Address(RVA = "0x62ADC0", Offset = "0x629DC0", VA = "0x18062ADC0")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x17001864 RID: 6244
|
||||
// (get) Token: 0x0600993E RID: 39230 RVA: 0x001F5040 File Offset: 0x001F3240
|
||||
// (set) Token: 0x0600993F RID: 39231 RVA: 0x001F5054 File Offset: 0x001F3254
|
||||
[Token(Token = "0x17001864")]
|
||||
public bool ServerNoContextTakeover
|
||||
{
|
||||
[Token(Token = "0x600993E")]
|
||||
[Address(RVA = "0x498E20", Offset = "0x497E20", VA = "0x180498E20")]
|
||||
get;
|
||||
[Token(Token = "0x600993F")]
|
||||
[Address(RVA = "0x62FA00", Offset = "0x62EA00", VA = "0x18062FA00")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x17001865 RID: 6245
|
||||
// (get) Token: 0x06009940 RID: 39232 RVA: 0x001F5068 File Offset: 0x001F3268
|
||||
// (set) Token: 0x06009941 RID: 39233 RVA: 0x001F507C File Offset: 0x001F327C
|
||||
[Token(Token = "0x17001865")]
|
||||
public int ClientMaxWindowBits
|
||||
{
|
||||
[Token(Token = "0x6009940")]
|
||||
[Address(RVA = "0x4936D0", Offset = "0x4926D0", VA = "0x1804936D0")]
|
||||
get;
|
||||
[Token(Token = "0x6009941")]
|
||||
[Address(RVA = "0x5F1920", Offset = "0x5F0920", VA = "0x1805F1920")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x17001866 RID: 6246
|
||||
// (get) Token: 0x06009942 RID: 39234 RVA: 0x001F5090 File Offset: 0x001F3290
|
||||
// (set) Token: 0x06009943 RID: 39235 RVA: 0x001F50A4 File Offset: 0x001F32A4
|
||||
[Token(Token = "0x17001866")]
|
||||
public int ServerMaxWindowBits
|
||||
{
|
||||
[Token(Token = "0x6009942")]
|
||||
[Address(RVA = "0x411540", Offset = "0x410540", VA = "0x180411540")]
|
||||
get;
|
||||
[Token(Token = "0x6009943")]
|
||||
[Address(RVA = "0x5F1910", Offset = "0x5F0910", VA = "0x1805F1910")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x17001867 RID: 6247
|
||||
// (get) Token: 0x06009944 RID: 39236 RVA: 0x001F50B8 File Offset: 0x001F32B8
|
||||
// (set) Token: 0x06009945 RID: 39237 RVA: 0x001F50CC File Offset: 0x001F32CC
|
||||
[Token(Token = "0x17001867")]
|
||||
public CompressionLevel Level
|
||||
{
|
||||
[Token(Token = "0x6009944")]
|
||||
[Address(RVA = "0x497590", Offset = "0x496590", VA = "0x180497590")]
|
||||
get;
|
||||
[Token(Token = "0x6009945")]
|
||||
[Address(RVA = "0x50A2B0", Offset = "0x5092B0", VA = "0x18050A2B0")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x17001868 RID: 6248
|
||||
// (get) Token: 0x06009946 RID: 39238 RVA: 0x001F50E0 File Offset: 0x001F32E0
|
||||
// (set) Token: 0x06009947 RID: 39239 RVA: 0x001F50F4 File Offset: 0x001F32F4
|
||||
[Token(Token = "0x17001868")]
|
||||
public int MinimumDataLegthToCompress
|
||||
{
|
||||
[Token(Token = "0x6009946")]
|
||||
[Address(RVA = "0x470B70", Offset = "0x46FB70", VA = "0x180470B70")]
|
||||
get;
|
||||
[Token(Token = "0x6009947")]
|
||||
[Address(RVA = "0x62ADB0", Offset = "0x629DB0", VA = "0x18062ADB0")]
|
||||
set;
|
||||
}
|
||||
|
||||
// Token: 0x06009948 RID: 39240 RVA: 0x001F5108 File Offset: 0x001F3308
|
||||
[Token(Token = "0x6009948")]
|
||||
[Address(RVA = "0x62F9C0", Offset = "0x62E9C0", VA = "0x18062F9C0")]
|
||||
public PerMessageCompression()
|
||||
{
|
||||
this.Level = (CompressionLevel)((ulong)6L);
|
||||
this.ClientNoContextTakeover = false;
|
||||
this.ClientMaxWindowBits = (int)((ulong)15L);
|
||||
this.ServerMaxWindowBits = (int)((ulong)15L);
|
||||
this.MinimumDataLegthToCompress = (int)((ulong)256L);
|
||||
}
|
||||
|
||||
// Token: 0x06009949 RID: 39241 RVA: 0x001F514C File Offset: 0x001F334C
|
||||
[Token(Token = "0x6009949")]
|
||||
[Address(RVA = "0x62F970", Offset = "0x62E970", VA = "0x18062F970")]
|
||||
public PerMessageCompression(CompressionLevel level, bool clientNoContextTakeover, bool serverNoContextTakeover, int desiredClientMaxWindowBits, int desiredServerMaxWindowBits, int minDatalengthToCompress)
|
||||
{
|
||||
this.ClientMaxWindowBits = 0;
|
||||
this.ServerMaxWindowBits = 0;
|
||||
this.Level = level;
|
||||
this.MinimumDataLegthToCompress = 0;
|
||||
this.ClientNoContextTakeover = clientNoContextTakeover;
|
||||
}
|
||||
|
||||
// Token: 0x0600994A RID: 39242 RVA: 0x001F5184 File Offset: 0x001F3384
|
||||
[Token(Token = "0x600994A")]
|
||||
[Address(RVA = "0x62EE20", Offset = "0x62DE20", VA = "0x18062EE20", Slot = "4")]
|
||||
public void AddNegotiation(HTTPRequest request)
|
||||
{
|
||||
if (this.<ServerNoContextTakeover>k__BackingField)
|
||||
{
|
||||
string text = "permessage-deflate" + "; server_no_context_takeover";
|
||||
}
|
||||
string text2;
|
||||
if (this.<ClientNoContextTakeover>k__BackingField)
|
||||
{
|
||||
text2 = "permessage-deflate" + "; client_no_context_takeover";
|
||||
}
|
||||
int num = this.<ServerMaxWindowBits>k__BackingField;
|
||||
if (num == 15)
|
||||
{
|
||||
this.<ServerMaxWindowBits>k__BackingField = num;
|
||||
}
|
||||
string text4;
|
||||
string text3 = text2 + "; server_max_window_bits=" + text4;
|
||||
if (this.<ClientMaxWindowBits>k__BackingField == 15)
|
||||
{
|
||||
string text5 = text3 + "; client_max_window_bits";
|
||||
this.<ClientMaxWindowBits>k__BackingField = (int)((ulong)15L);
|
||||
}
|
||||
string text7;
|
||||
string text6 = text3 + "; client_max_window_bits=" + text7;
|
||||
request.AddHeader("Sec-WebSocket-Extensions", text6);
|
||||
}
|
||||
|
||||
// Token: 0x0600994B RID: 39243 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x600994B")]
|
||||
[Address(RVA = "0x62F5E0", Offset = "0x62E5E0", VA = "0x18062F5E0", Slot = "5")]
|
||||
public bool ParseNegotiation(WebSocketResponse resp)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x0600994C RID: 39244 RVA: 0x001F522C File Offset: 0x001F342C
|
||||
[Token(Token = "0x600994C")]
|
||||
[Address(RVA = "0x62F5A0", Offset = "0x62E5A0", VA = "0x18062F5A0", Slot = "6")]
|
||||
public byte GetFrameHeader(WebSocketFrame writer, byte inFlag)
|
||||
{
|
||||
WebSocketFrameTypes <Type>k__BackingField = writer.<Type>k__BackingField;
|
||||
if (writer.<Data>k__BackingField != 0)
|
||||
{
|
||||
int num = this.<MinimumDataLegthToCompress>k__BackingField;
|
||||
}
|
||||
return inFlag;
|
||||
}
|
||||
|
||||
// Token: 0x0600994D RID: 39245 RVA: 0x001F5258 File Offset: 0x001F3458
|
||||
[Token(Token = "0x600994D")]
|
||||
[Address(RVA = "0x62F4F0", Offset = "0x62E4F0", VA = "0x18062F4F0", Slot = "7")]
|
||||
public byte[] Encode(WebSocketFrame writer)
|
||||
{
|
||||
byte[] <Data>k__BackingField = writer.<Data>k__BackingField;
|
||||
if (<Data>k__BackingField != 0)
|
||||
{
|
||||
return <Data>k__BackingField;
|
||||
}
|
||||
return VariableSizedBufferPool.NoData;
|
||||
}
|
||||
|
||||
// Token: 0x0600994E RID: 39246 RVA: 0x001F5290 File Offset: 0x001F3490
|
||||
[Token(Token = "0x600994E")]
|
||||
[Address(RVA = "0x62F1C0", Offset = "0x62E1C0", VA = "0x18062F1C0", Slot = "8")]
|
||||
public byte[] Decode(byte header, byte[] data, int length)
|
||||
{
|
||||
return this.Decompress(data, length);
|
||||
}
|
||||
|
||||
// Token: 0x0600994F RID: 39247 RVA: 0x001F52A8 File Offset: 0x001F34A8
|
||||
[Token(Token = "0x600994F")]
|
||||
[Address(RVA = "0x62EF50", Offset = "0x62DF50", VA = "0x18062EF50")]
|
||||
private byte[] Compress(byte[] data, int length)
|
||||
{
|
||||
int num;
|
||||
byte[] array;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
if (this.compressorOutputStream == 0)
|
||||
{
|
||||
BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream();
|
||||
this.compressorOutputStream = bufferPoolMemoryStream;
|
||||
}
|
||||
if (this.compressorDeflateStream == num)
|
||||
{
|
||||
CompressionLevel compressionLevel = this.<Level>k__BackingField;
|
||||
int num2 = this.<ClientMaxWindowBits>k__BackingField;
|
||||
DeflateStream deflateStream;
|
||||
this.compressorDeflateStream = deflateStream;
|
||||
FlushType flushMode = deflateStream.FlushMode;
|
||||
}
|
||||
int num3 = this.compressorDeflateStream.ReadByte();
|
||||
DeflateStream deflateStream2 = this.compressorDeflateStream;
|
||||
long position = this.compressorOutputStream.Position;
|
||||
bool canWrite = this.compressorOutputStream.CanWrite;
|
||||
array = this.compressorOutputStream.ToArray();
|
||||
if (this.<ClientNoContextTakeover>k__BackingField)
|
||||
{
|
||||
this.compressorDeflateStream.Dispose();
|
||||
this.compressorDeflateStream = (ulong)0L;
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
return array;
|
||||
}
|
||||
|
||||
// Token: 0x06009950 RID: 39248 RVA: 0x001F5388 File Offset: 0x001F3588
|
||||
[Token(Token = "0x6009950")]
|
||||
[Address(RVA = "0x62F1E0", Offset = "0x62E1E0", VA = "0x18062F1E0")]
|
||||
private byte[] Decompress(byte[] data, int length)
|
||||
{
|
||||
BufferPoolMemoryStream bufferPoolMemoryStream = this.decompressorInputStream;
|
||||
if (bufferPoolMemoryStream == 0)
|
||||
{
|
||||
int num;
|
||||
BufferPoolMemoryStream bufferPoolMemoryStream2 = new BufferPoolMemoryStream(num);
|
||||
num = data.Length;
|
||||
num += 4;
|
||||
this.decompressorInputStream = bufferPoolMemoryStream2;
|
||||
}
|
||||
int num2 = bufferPoolMemoryStream.ReadByte();
|
||||
BufferPoolMemoryStream bufferPoolMemoryStream3 = this.decompressorInputStream;
|
||||
byte[] trailer = PerMessageCompression.Trailer;
|
||||
int num3 = bufferPoolMemoryStream3.ReadByte();
|
||||
long position = this.decompressorInputStream.Position;
|
||||
int num4 = 0;
|
||||
if (this.decompressorDeflateStream == num4)
|
||||
{
|
||||
BufferPoolMemoryStream bufferPoolMemoryStream4 = this.decompressorInputStream;
|
||||
int num5 = this.<ServerMaxWindowBits>k__BackingField;
|
||||
ulong num6;
|
||||
DeflateStream deflateStream = new DeflateStream(bufferPoolMemoryStream4, CompressionMode.Decompress, CompressionLevel.Default, num6 != 0UL, num5);
|
||||
this.decompressorDeflateStream = deflateStream;
|
||||
FlushType flushMode = deflateStream.FlushMode;
|
||||
}
|
||||
if (this.decompressorOutputStream == 0)
|
||||
{
|
||||
BufferPoolMemoryStream bufferPoolMemoryStream5 = new BufferPoolMemoryStream();
|
||||
this.decompressorOutputStream = bufferPoolMemoryStream5;
|
||||
}
|
||||
uint num7;
|
||||
ulong num8;
|
||||
byte[] array = VariableSizedBufferPool.Get((long)num7, num8 != 0UL);
|
||||
DeflateStream deflateStream2 = this.decompressorDeflateStream;
|
||||
int num9 = this.decompressorOutputStream.ReadByte();
|
||||
VariableSizedBufferPool.Release(array);
|
||||
DeflateStream deflateStream3 = this.decompressorDeflateStream;
|
||||
byte[] array2 = this.decompressorOutputStream.ToArray();
|
||||
if ((this.<ServerNoContextTakeover>k__BackingField ? 1 : 0) != num4)
|
||||
{
|
||||
this.decompressorDeflateStream.Dispose();
|
||||
this.decompressorDeflateStream = num4;
|
||||
}
|
||||
return array2;
|
||||
}
|
||||
|
||||
// Token: 0x06009951 RID: 39249 RVA: 0x001F549C File Offset: 0x001F369C
|
||||
// Note: this type is marked as 'beforefieldinit'.
|
||||
[Token(Token = "0x6009951")]
|
||||
[Address(RVA = "0x62F8E0", Offset = "0x62E8E0", VA = "0x18062F8E0")]
|
||||
static PerMessageCompression()
|
||||
{
|
||||
byte[] array = new byte[4];
|
||||
array[0] = (byte)((ulong)255L);
|
||||
array[0] = (byte)((ulong)255L);
|
||||
PerMessageCompression.Trailer = array;
|
||||
}
|
||||
|
||||
// Token: 0x040067A5 RID: 26533
|
||||
[Token(Token = "0x40067A5")]
|
||||
public const int MinDataLengthToCompressDefault = 256;
|
||||
|
||||
// Token: 0x040067A6 RID: 26534
|
||||
[Token(Token = "0x40067A6")]
|
||||
private static readonly byte[] Trailer;
|
||||
|
||||
// Token: 0x040067AD RID: 26541
|
||||
[FieldOffset(Offset = "0x28")]
|
||||
[Token(Token = "0x40067AD")]
|
||||
private BufferPoolMemoryStream compressorOutputStream;
|
||||
|
||||
// Token: 0x040067AE RID: 26542
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x40067AE")]
|
||||
private DeflateStream compressorDeflateStream;
|
||||
|
||||
// Token: 0x040067AF RID: 26543
|
||||
[FieldOffset(Offset = "0x38")]
|
||||
[Token(Token = "0x40067AF")]
|
||||
private BufferPoolMemoryStream decompressorInputStream;
|
||||
|
||||
// Token: 0x040067B0 RID: 26544
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x40067B0")]
|
||||
private BufferPoolMemoryStream decompressorOutputStream;
|
||||
|
||||
// Token: 0x040067B1 RID: 26545
|
||||
[FieldOffset(Offset = "0x48")]
|
||||
[Token(Token = "0x40067B1")]
|
||||
private DeflateStream decompressorDeflateStream;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user