1448 lines
45 KiB
C#
1448 lines
45 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using BestHTTP.Caching;
|
|
using BestHTTP.Cookies;
|
|
using BestHTTP.Decompression.Zlib;
|
|
using BestHTTP.Extensions;
|
|
using BestHTTP.Logger;
|
|
using Cpp2IlInjected;
|
|
using UnityEngine;
|
|
|
|
namespace BestHTTP
|
|
{
|
|
// Token: 0x02001986 RID: 6534
|
|
[Token(Token = "0x2001986")]
|
|
public class HTTPResponse : IDisposable
|
|
{
|
|
// Token: 0x17001830 RID: 6192
|
|
// (get) Token: 0x06009814 RID: 38932 RVA: 0x001EFBBC File Offset: 0x001EDDBC
|
|
// (set) Token: 0x06009815 RID: 38933 RVA: 0x001EFBD0 File Offset: 0x001EDDD0
|
|
[Token(Token = "0x17001830")]
|
|
public int VersionMajor
|
|
{
|
|
[Token(Token = "0x6009814")]
|
|
[Address(RVA = "0x40F000", Offset = "0x40E000", VA = "0x18040F000")]
|
|
get;
|
|
[Token(Token = "0x6009815")]
|
|
[Address(RVA = "0x470D10", Offset = "0x46FD10", VA = "0x180470D10")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001831 RID: 6193
|
|
// (get) Token: 0x06009816 RID: 38934 RVA: 0x001EFBE4 File Offset: 0x001EDDE4
|
|
// (set) Token: 0x06009817 RID: 38935 RVA: 0x001EFBF8 File Offset: 0x001EDDF8
|
|
[Token(Token = "0x17001831")]
|
|
public int VersionMinor
|
|
{
|
|
[Token(Token = "0x6009816")]
|
|
[Address(RVA = "0x4936D0", Offset = "0x4926D0", VA = "0x1804936D0")]
|
|
get;
|
|
[Token(Token = "0x6009817")]
|
|
[Address(RVA = "0x5F1920", Offset = "0x5F0920", VA = "0x1805F1920")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001832 RID: 6194
|
|
// (get) Token: 0x06009818 RID: 38936 RVA: 0x001EFC0C File Offset: 0x001EDE0C
|
|
// (set) Token: 0x06009819 RID: 38937 RVA: 0x001EFC20 File Offset: 0x001EDE20
|
|
[Token(Token = "0x17001832")]
|
|
public int StatusCode
|
|
{
|
|
[Token(Token = "0x6009818")]
|
|
[Address(RVA = "0x411540", Offset = "0x410540", VA = "0x180411540")]
|
|
get;
|
|
[Token(Token = "0x6009819")]
|
|
[Address(RVA = "0x5F1910", Offset = "0x5F0910", VA = "0x1805F1910")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001833 RID: 6195
|
|
// (get) Token: 0x0600981A RID: 38938 RVA: 0x001EFC34 File Offset: 0x001EDE34
|
|
[Token(Token = "0x17001833")]
|
|
public bool IsSuccess
|
|
{
|
|
[Token(Token = "0x600981A")]
|
|
[Address(RVA = "0x229F670", Offset = "0x229E670", VA = "0x18229F670")]
|
|
get
|
|
{
|
|
int num = this.<StatusCode>k__BackingField;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001834 RID: 6196
|
|
// (get) Token: 0x0600981B RID: 38939 RVA: 0x001EFC54 File Offset: 0x001EDE54
|
|
// (set) Token: 0x0600981C RID: 38940 RVA: 0x001EFC68 File Offset: 0x001EDE68
|
|
[Token(Token = "0x17001834")]
|
|
public string Message
|
|
{
|
|
[Token(Token = "0x600981B")]
|
|
[Address(RVA = "0x4157C0", Offset = "0x4147C0", VA = "0x1804157C0")]
|
|
get;
|
|
[Token(Token = "0x600981C")]
|
|
[Address(RVA = "0x415810", Offset = "0x414810", VA = "0x180415810")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001835 RID: 6197
|
|
// (get) Token: 0x0600981D RID: 38941 RVA: 0x001EFC7C File Offset: 0x001EDE7C
|
|
// (set) Token: 0x0600981E RID: 38942 RVA: 0x001EFC90 File Offset: 0x001EDE90
|
|
[Token(Token = "0x17001835")]
|
|
public bool IsStreamed
|
|
{
|
|
[Token(Token = "0x600981D")]
|
|
[Address(RVA = "0x51F260", Offset = "0x51E260", VA = "0x18051F260")]
|
|
get;
|
|
[Token(Token = "0x600981E")]
|
|
[Address(RVA = "0x51F2B0", Offset = "0x51E2B0", VA = "0x18051F2B0")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001836 RID: 6198
|
|
// (get) Token: 0x0600981F RID: 38943 RVA: 0x001EFCA4 File Offset: 0x001EDEA4
|
|
// (set) Token: 0x06009820 RID: 38944 RVA: 0x001EFCB8 File Offset: 0x001EDEB8
|
|
[Token(Token = "0x17001836")]
|
|
public bool IsStreamingFinished
|
|
{
|
|
[Token(Token = "0x600981F")]
|
|
[Address(RVA = "0x844B90", Offset = "0x843B90", VA = "0x180844B90")]
|
|
get;
|
|
[Token(Token = "0x6009820")]
|
|
[Address(RVA = "0x844B60", Offset = "0x843B60", VA = "0x180844B60")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x17001837 RID: 6199
|
|
// (get) Token: 0x06009821 RID: 38945 RVA: 0x001EFCCC File Offset: 0x001EDECC
|
|
// (set) Token: 0x06009822 RID: 38946 RVA: 0x001EFCE0 File Offset: 0x001EDEE0
|
|
[Token(Token = "0x17001837")]
|
|
public bool IsFromCache
|
|
{
|
|
[Token(Token = "0x6009821")]
|
|
[Address(RVA = "0xAC2F30", Offset = "0xAC1F30", VA = "0x180AC2F30")]
|
|
get;
|
|
[Token(Token = "0x6009822")]
|
|
[Address(RVA = "0x113EE50", Offset = "0x113DE50", VA = "0x18113EE50")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x17001838 RID: 6200
|
|
// (get) Token: 0x06009823 RID: 38947 RVA: 0x001EFCF4 File Offset: 0x001EDEF4
|
|
// (set) Token: 0x06009824 RID: 38948 RVA: 0x001EFD08 File Offset: 0x001EDF08
|
|
[Token(Token = "0x17001838")]
|
|
public HTTPCacheFileInfo CacheFileInfo
|
|
{
|
|
[Token(Token = "0x6009823")]
|
|
[Address(RVA = "0x4157E0", Offset = "0x4147E0", VA = "0x1804157E0")]
|
|
get;
|
|
[Token(Token = "0x6009824")]
|
|
[Address(RVA = "0x415830", Offset = "0x414830", VA = "0x180415830")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x17001839 RID: 6201
|
|
// (get) Token: 0x06009825 RID: 38949 RVA: 0x001EFD1C File Offset: 0x001EDF1C
|
|
// (set) Token: 0x06009826 RID: 38950 RVA: 0x001EFD30 File Offset: 0x001EDF30
|
|
[Token(Token = "0x17001839")]
|
|
public bool IsCacheOnly
|
|
{
|
|
[Token(Token = "0x6009825")]
|
|
[Address(RVA = "0x417650", Offset = "0x416650", VA = "0x180417650")]
|
|
get;
|
|
[Token(Token = "0x6009826")]
|
|
[Address(RVA = "0x417950", Offset = "0x416950", VA = "0x180417950")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x1700183A RID: 6202
|
|
// (get) Token: 0x06009827 RID: 38951 RVA: 0x001EFD44 File Offset: 0x001EDF44
|
|
// (set) Token: 0x06009828 RID: 38952 RVA: 0x001EFD58 File Offset: 0x001EDF58
|
|
[Token(Token = "0x1700183A")]
|
|
public Dictionary<string, List<string>> Headers
|
|
{
|
|
[Token(Token = "0x6009827")]
|
|
[Address(RVA = "0x417680", Offset = "0x416680", VA = "0x180417680")]
|
|
get;
|
|
[Token(Token = "0x6009828")]
|
|
[Address(RVA = "0x417960", Offset = "0x416960", VA = "0x180417960")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x1700183B RID: 6203
|
|
// (get) Token: 0x06009829 RID: 38953 RVA: 0x001EFD6C File Offset: 0x001EDF6C
|
|
// (set) Token: 0x0600982A RID: 38954 RVA: 0x001EFD80 File Offset: 0x001EDF80
|
|
[Token(Token = "0x1700183B")]
|
|
public byte[] Data
|
|
{
|
|
[Token(Token = "0x6009829")]
|
|
[Address(RVA = "0x4975A0", Offset = "0x4965A0", VA = "0x1804975A0")]
|
|
get;
|
|
[Token(Token = "0x600982A")]
|
|
[Address(RVA = "0x55BCF0", Offset = "0x55ACF0", VA = "0x18055BCF0")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x1700183C RID: 6204
|
|
// (get) Token: 0x0600982B RID: 38955 RVA: 0x001EFD94 File Offset: 0x001EDF94
|
|
// (set) Token: 0x0600982C RID: 38956 RVA: 0x001EFDA8 File Offset: 0x001EDFA8
|
|
[Token(Token = "0x1700183C")]
|
|
public bool IsUpgraded
|
|
{
|
|
[Token(Token = "0x600982B")]
|
|
[Address(RVA = "0x41CF80", Offset = "0x41BF80", VA = "0x18041CF80")]
|
|
get;
|
|
[Token(Token = "0x600982C")]
|
|
[Address(RVA = "0x41D090", Offset = "0x41C090", VA = "0x18041D090")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x1700183D RID: 6205
|
|
// (get) Token: 0x0600982D RID: 38957 RVA: 0x001EFDBC File Offset: 0x001EDFBC
|
|
// (set) Token: 0x0600982E RID: 38958 RVA: 0x001EFDD0 File Offset: 0x001EDFD0
|
|
[Token(Token = "0x1700183D")]
|
|
public List<Cookie> Cookies
|
|
{
|
|
[Token(Token = "0x600982D")]
|
|
[Address(RVA = "0x417710", Offset = "0x416710", VA = "0x180417710")]
|
|
get;
|
|
[Token(Token = "0x600982E")]
|
|
[Address(RVA = "0x417A10", Offset = "0x416A10", VA = "0x180417A10")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x1700183E RID: 6206
|
|
// (get) Token: 0x0600982F RID: 38959 RVA: 0x001EFDE4 File Offset: 0x001EDFE4
|
|
[Token(Token = "0x1700183E")]
|
|
public string DataAsText
|
|
{
|
|
[Token(Token = "0x600982F")]
|
|
[Address(RVA = "0x229F500", Offset = "0x229E500", VA = "0x18229F500")]
|
|
get
|
|
{
|
|
if (this.<Data>k__BackingField == (ulong)0L)
|
|
{
|
|
return string.Empty;
|
|
}
|
|
if (string.IsNullOrEmpty(this.dataAsText))
|
|
{
|
|
Encoding utf = Encoding.UTF8;
|
|
byte[] array = this.<Data>k__BackingField;
|
|
string @string = utf.GetString(array);
|
|
this.dataAsText = @string;
|
|
return @string;
|
|
}
|
|
return this.dataAsText;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700183F RID: 6207
|
|
// (get) Token: 0x06009830 RID: 38960 RVA: 0x001EFE3C File Offset: 0x001EE03C
|
|
[Token(Token = "0x1700183F")]
|
|
public Texture2D DataAsTexture2D
|
|
{
|
|
[Token(Token = "0x6009830")]
|
|
[Address(RVA = "0x229F5A0", Offset = "0x229E5A0", VA = "0x18229F5A0")]
|
|
get
|
|
{
|
|
if (this.<Data>k__BackingField != (ulong)0L)
|
|
{
|
|
Texture2D texture2D = this.texture;
|
|
int num = 0;
|
|
if (!(texture2D != num))
|
|
{
|
|
int num2;
|
|
int num3;
|
|
ulong num4;
|
|
Texture2D texture2D2 = new Texture2D(num2, num3, (TextureFormat)((uint)5), num4 != 0UL);
|
|
num3 = 0;
|
|
num2 = 0;
|
|
byte[] array = this.<Data>k__BackingField;
|
|
this.texture = texture2D2;
|
|
bool flag = texture2D2.LoadImage(array);
|
|
}
|
|
return this.texture;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001840 RID: 6208
|
|
// (get) Token: 0x06009831 RID: 38961 RVA: 0x001EFEA0 File Offset: 0x001EE0A0
|
|
// (set) Token: 0x06009832 RID: 38962 RVA: 0x001EFEB4 File Offset: 0x001EE0B4
|
|
[Token(Token = "0x17001840")]
|
|
public bool IsClosedManually
|
|
{
|
|
[Token(Token = "0x6009831")]
|
|
[Address(RVA = "0x6B48A0", Offset = "0x6B38A0", VA = "0x1806B48A0")]
|
|
get;
|
|
[Token(Token = "0x6009832")]
|
|
[Address(RVA = "0x6B48F0", Offset = "0x6B38F0", VA = "0x1806B48F0")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x06009833 RID: 38963 RVA: 0x001EFEC8 File Offset: 0x001EE0C8
|
|
[Token(Token = "0x6009833")]
|
|
[Address(RVA = "0x229F440", Offset = "0x229E440", VA = "0x18229F440")]
|
|
public HTTPResponse(HTTPRequest request, Stream stream, bool isStreamed, bool isFromCache)
|
|
{
|
|
object obj = new object();
|
|
this.SyncRoot = obj;
|
|
base..ctor();
|
|
this.IsFromCache = false;
|
|
this.baseRequest = request;
|
|
this.Stream = stream;
|
|
this.IsStreamed = isStreamed;
|
|
bool cacheOnly = request.cacheOnly;
|
|
this.IsCacheOnly = cacheOnly;
|
|
this.IsClosedManually = false;
|
|
}
|
|
|
|
// Token: 0x06009834 RID: 38964 RVA: 0x001EFF20 File Offset: 0x001EE120
|
|
[Token(Token = "0x6009834")]
|
|
[Address(RVA = "0x229EA10", Offset = "0x229DA10", VA = "0x18229EA10", Slot = "5")]
|
|
public virtual bool Receive(int forceReadRawContentLength = -1, bool readPayloadData = true)
|
|
{
|
|
for (;;)
|
|
{
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text;
|
|
this.VerboseLogging(text);
|
|
}
|
|
Stream stream = this.Stream;
|
|
string text3;
|
|
string text2;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
text2 = string.Format("Status Line: '{0}'", text3);
|
|
this.VerboseLogging(text2);
|
|
}
|
|
if (text2 == 0)
|
|
{
|
|
char[] array = new char[2];
|
|
array[0] = (char)((uint)47);
|
|
array[0] = (char)((uint)46);
|
|
string[] array2 = text3.Split(array);
|
|
int num = int.Parse(array2[1]);
|
|
this.<VersionMajor>k__BackingField = num;
|
|
int num2 = int.Parse(array2[2]);
|
|
this.<VersionMinor>k__BackingField = num2;
|
|
BestHTTP.Logger.ILogger logger = HTTPManager.Logger;
|
|
int num3 = 0;
|
|
if (logger == 0)
|
|
{
|
|
string text4 = num3.ToString();
|
|
string text5 = this.<VersionMinor>k__BackingField.ToString();
|
|
string text6 = string.Format("HTTP Version: '{0}.{1}'", text4, text5);
|
|
this.VerboseLogging(text6);
|
|
}
|
|
Stream stream2 = this.Stream;
|
|
string text8;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text7 = string.Format("Status Code: '{0}'", text8);
|
|
this.VerboseLogging(text7);
|
|
}
|
|
bool flag;
|
|
if (this.baseRequest.<DisableRetry>k__BackingField || flag)
|
|
{
|
|
int num4 = int.Parse(text8);
|
|
this.<StatusCode>k__BackingField = num4;
|
|
int stringLength = text8.m_stringLength;
|
|
if (stringLength <= 0)
|
|
{
|
|
goto IL_190;
|
|
}
|
|
char c = text8[stringLength];
|
|
int stringLength2 = text8.m_stringLength;
|
|
char c2 = text8[stringLength2];
|
|
Stream stream3 = this.Stream;
|
|
string text9;
|
|
this.<Message>k__BackingField = text9;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text10 = this.<Message>k__BackingField;
|
|
string text11 = string.Format("Status Message: '{0}'", text10);
|
|
this.VerboseLogging(text11);
|
|
goto IL_190;
|
|
}
|
|
IL_1C9:
|
|
Stream stream4 = this.Stream;
|
|
this.ReadHeaders(stream4);
|
|
if (this.<StatusCode>k__BackingField != 101)
|
|
{
|
|
}
|
|
if (this.HasHeaderWithValue("connection", "upgrade"))
|
|
{
|
|
}
|
|
bool flag2 = this.GetHeaderValues("upgrade") != 0;
|
|
this.<IsUpgraded>k__BackingField = flag2;
|
|
if (flag2 && HTTPManager.Logger == 0)
|
|
{
|
|
this.VerboseLogging("Request Upgraded!");
|
|
}
|
|
if (readPayloadData)
|
|
{
|
|
break;
|
|
}
|
|
goto IL_238;
|
|
IL_190:
|
|
BestHTTP.Logger.ILogger logger2 = HTTPManager.Logger;
|
|
int hashCode = this.baseRequest.CurrentUri.GetHashCode();
|
|
string text12 = string.Format("{0} - Skipping Status Message reading!", hashCode);
|
|
string empty = string.Empty;
|
|
this.<Message>k__BackingField = empty;
|
|
goto IL_1C9;
|
|
}
|
|
goto IL_27B;
|
|
}
|
|
IL_238:
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
if (!httprequest.<DisableRetry>k__BackingField && !httprequest.<DisableRetry>k__BackingField)
|
|
{
|
|
goto Block_12;
|
|
}
|
|
}
|
|
return this.ReadPayload(forceReadRawContentLength);
|
|
Block_12:
|
|
BestHTTP.Logger.ILogger logger3 = HTTPManager.Logger;
|
|
Uri uri;
|
|
int hashCode2 = uri.GetHashCode();
|
|
string text13 = string.Format("{0} - Failed to read Status Line! Retry is enabled, returning with false.", hashCode2);
|
|
IL_27B:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009835 RID: 38965 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x6009835")]
|
|
[Address(RVA = "0x229D770", Offset = "0x229C770", VA = "0x18229D770")]
|
|
protected bool ReadPayload(int forceReadRawContentLength)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06009836 RID: 38966 RVA: 0x001F01B0 File Offset: 0x001EE3B0
|
|
[Token(Token = "0x6009836")]
|
|
[Address(RVA = "0x229D620", Offset = "0x229C620", VA = "0x18229D620")]
|
|
protected void ReadHeaders(Stream stream)
|
|
{
|
|
string empty2;
|
|
string text4;
|
|
do
|
|
{
|
|
string empty = string.Empty;
|
|
string text;
|
|
if (!(text != empty))
|
|
{
|
|
break;
|
|
}
|
|
string text3;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text2 = string.Format("Header - '{0}': '{1}'", text, text3);
|
|
this.VerboseLogging(text2);
|
|
}
|
|
this.AddHeader(text, text3);
|
|
empty2 = string.Empty;
|
|
}
|
|
while (text4 != empty2);
|
|
}
|
|
|
|
// Token: 0x06009837 RID: 38967 RVA: 0x001F0210 File Offset: 0x001EE410
|
|
[Token(Token = "0x6009837")]
|
|
[Address(RVA = "0x229B240", Offset = "0x229A240", VA = "0x18229B240")]
|
|
protected void AddHeader(string name, string value)
|
|
{
|
|
string text = name.ToLower();
|
|
if (this.<Headers>k__BackingField == 0)
|
|
{
|
|
Dictionary<string, List<string>> dictionary = new Dictionary();
|
|
this.<Headers>k__BackingField = dictionary;
|
|
}
|
|
bool flag;
|
|
List<string> list;
|
|
if (!flag)
|
|
{
|
|
Dictionary<string, List<string>> dictionary2 = this.<Headers>k__BackingField;
|
|
list = new List(1);
|
|
throw new NullReferenceException();
|
|
}
|
|
list.Add(value);
|
|
}
|
|
|
|
// Token: 0x06009838 RID: 38968 RVA: 0x001F0264 File Offset: 0x001EE464
|
|
[Token(Token = "0x6009838")]
|
|
[Address(RVA = "0x229C4D0", Offset = "0x229B4D0", VA = "0x18229C4D0")]
|
|
public List<string> GetHeaderValues(string name)
|
|
{
|
|
if (this.<Headers>k__BackingField != (ulong)0L)
|
|
{
|
|
string text = name.ToLower();
|
|
Dictionary<string, List<string>> dictionary = this.<Headers>k__BackingField;
|
|
bool flag;
|
|
if (flag)
|
|
{
|
|
}
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009839 RID: 38969 RVA: 0x001F0298 File Offset: 0x001EE498
|
|
[Token(Token = "0x6009839")]
|
|
[Address(RVA = "0x229C420", Offset = "0x229B420", VA = "0x18229C420")]
|
|
public string GetFirstHeaderValue(string name)
|
|
{
|
|
if (this.<Headers>k__BackingField != (ulong)0L)
|
|
{
|
|
string text = name.ToLower();
|
|
Dictionary<string, List<string>> dictionary = this.<Headers>k__BackingField;
|
|
bool flag;
|
|
if (!flag || flag)
|
|
{
|
|
}
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600983A RID: 38970 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x600983A")]
|
|
[Address(RVA = "0x229CA00", Offset = "0x229BA00", VA = "0x18229CA00")]
|
|
public bool HasHeaderWithValue(string headerName, string value)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600983B RID: 38971 RVA: 0x001F02D0 File Offset: 0x001EE4D0
|
|
[Token(Token = "0x600983B")]
|
|
[Address(RVA = "0x229CAB0", Offset = "0x229BAB0", VA = "0x18229CAB0")]
|
|
public bool HasHeader(string headerName)
|
|
{
|
|
return this.GetHeaderValues(headerName) != 0;
|
|
}
|
|
|
|
// Token: 0x0600983C RID: 38972 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x600983C")]
|
|
[Address(RVA = "0x229C570", Offset = "0x229B570", VA = "0x18229C570")]
|
|
public HTTPRange GetRange()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600983D RID: 38973 RVA: 0x001F02EC File Offset: 0x001EE4EC
|
|
[Token(Token = "0x600983D")]
|
|
[Address(RVA = "0x229DEC0", Offset = "0x229CEC0", VA = "0x18229DEC0")]
|
|
public static string ReadTo(Stream stream, byte blocker)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
uint num2;
|
|
ulong num3;
|
|
byte[] array = VariableSizedBufferPool.Get((long)num2, num3 != 0UL);
|
|
int num4;
|
|
uint num5;
|
|
if (num4 != (int)blocker && num4 != -1 && !char.IsWhiteSpace((char)num5))
|
|
{
|
|
num++;
|
|
}
|
|
bool flag;
|
|
if (num <= 0 || flag)
|
|
{
|
|
}
|
|
Encoding utf = Encoding.UTF8;
|
|
}
|
|
while (num != 0);
|
|
string text;
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x0600983E RID: 38974 RVA: 0x001F0360 File Offset: 0x001EE560
|
|
[Token(Token = "0x600983E")]
|
|
[Address(RVA = "0x229E190", Offset = "0x229D190", VA = "0x18229E190")]
|
|
public static string ReadTo(Stream stream, byte blocker1, byte blocker2)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
uint num2;
|
|
ulong num3;
|
|
byte[] array = VariableSizedBufferPool.Get((long)num2, num3 != 0UL);
|
|
int num4;
|
|
uint num5;
|
|
if (num4 != (int)blocker1 && num4 != (int)blocker1 && num4 != -1 && !char.IsWhiteSpace((char)num5))
|
|
{
|
|
num++;
|
|
}
|
|
if (num <= 0 || char.IsWhiteSpace((char)blocker1))
|
|
{
|
|
}
|
|
Encoding utf = Encoding.UTF8;
|
|
}
|
|
while (num != 0);
|
|
string text;
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x0600983F RID: 38975 RVA: 0x001F03DC File Offset: 0x001EE5DC
|
|
[Token(Token = "0x600983F")]
|
|
[Address(RVA = "0x229CBB0", Offset = "0x229BBB0", VA = "0x18229CBB0")]
|
|
public static string NoTrimReadTo(Stream stream, byte blocker1, byte blocker2)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
uint num2;
|
|
ulong num3;
|
|
byte[] array = VariableSizedBufferPool.Get((long)num2, num3 != 0UL);
|
|
int num4;
|
|
uint num5;
|
|
if (num4 != (int)blocker1 && num4 != (int)blocker1 && num4 != -1 && !char.IsWhiteSpace((char)num5))
|
|
{
|
|
num++;
|
|
}
|
|
Encoding utf = Encoding.UTF8;
|
|
}
|
|
while (num != 0);
|
|
string text;
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x06009840 RID: 38976 RVA: 0x001F0440 File Offset: 0x001EE640
|
|
[Token(Token = "0x6009840")]
|
|
[Address(RVA = "0x229CE20", Offset = "0x229BE20", VA = "0x18229CE20")]
|
|
protected int ReadChunkLength(Stream stream)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (06009840)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.HTTPResponse::ReadChunkLength(System.IO.Stream)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_3E:
|
|
stloc:Exception(var_5_4E, newobj:Exception(Exception::.ctor, call:string(string::Format, ldstr:string("Can't parse '{0}' as a hex number!"), ldloc:string[exp:object](var_3_20))))
|
|
}
|
|
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
|
--- End of inner exception stack trace ---
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
|
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
|
|
*/;
|
|
}
|
|
|
|
// Token: 0x06009841 RID: 38977 RVA: 0x001F049C File Offset: 0x001EE69C
|
|
[Token(Token = "0x6009841")]
|
|
[Address(RVA = "0x229CF40", Offset = "0x229BF40", VA = "0x18229CF40")]
|
|
protected void ReadChunked(Stream stream)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
this.BeginReceiveStreamFragments();
|
|
string firstHeaderValue = this.GetFirstHeaderValue("Content-Length");
|
|
int num2 = 0;
|
|
if (!string.IsNullOrEmpty(firstHeaderValue))
|
|
{
|
|
bool flag = int.TryParse(firstHeaderValue, num2);
|
|
}
|
|
BestHTTP.Logger.ILogger logger = HTTPManager.Logger;
|
|
if (logger == 0)
|
|
{
|
|
string text2;
|
|
int num3;
|
|
string text = string.Format("ReadChunked - hasContentLengthHeader: {0}, contentLengthHeader: {1} realLength: {2:N0}", text2, firstHeaderValue, num3);
|
|
this.VerboseLogging(text);
|
|
}
|
|
BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream();
|
|
int num4 = this.ReadChunkLength(stream);
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text3;
|
|
this.VerboseLogging(text3);
|
|
}
|
|
ulong num5;
|
|
byte[] array = VariableSizedBufferPool.Get((long)Mathf.NextPowerOfTwo(num4), num5 != 0UL);
|
|
this.baseRequest.<DownloadLength>k__BackingField = (long)num4;
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
int num6 = this.<StatusCode>k__BackingField;
|
|
if (num4 <= 99 || num6 != 304)
|
|
{
|
|
}
|
|
uint num7;
|
|
bool flag2 = num7 != (uint)0;
|
|
httprequest.<DownloadProgressChanged>k__BackingField = flag2;
|
|
if (this.<IsFromCache>k__BackingField)
|
|
{
|
|
}
|
|
string firstHeaderValue2 = this.GetFirstHeaderValue("content-encoding");
|
|
if (string.IsNullOrEmpty(firstHeaderValue2))
|
|
{
|
|
}
|
|
bool flag3 = string.Equals(firstHeaderValue2, "gzip");
|
|
HTTPRequest httprequest3;
|
|
if (num4 != 0)
|
|
{
|
|
num4 -= num;
|
|
stream.SetLength((long)num4);
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
httprequest3 = this.baseRequest;
|
|
if (!this.IsSuccess)
|
|
{
|
|
}
|
|
uint num8;
|
|
bool flag4 = num8 != (uint)0;
|
|
httprequest3.<DownloadProgressChanged>k__BackingField = flag4;
|
|
if (num < num4)
|
|
{
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
int num9 = bufferPoolMemoryStream.ReadByte();
|
|
}
|
|
if (httprequest3 == 0)
|
|
{
|
|
}
|
|
byte[] array2;
|
|
if (array2 != 0)
|
|
{
|
|
int length = array2.Length;
|
|
int num10 = 0;
|
|
this.FeedStreamFragment(array2, num10, length);
|
|
}
|
|
ulong num11;
|
|
string text4 = HTTPResponse.ReadTo(stream, (byte)num11);
|
|
num4 = this.ReadChunkLength(stream);
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text5;
|
|
this.VerboseLogging(text5);
|
|
}
|
|
HTTPRequest httprequest4 = this.baseRequest;
|
|
HTTPRequest httprequest5 = this.baseRequest;
|
|
if (this.IsSuccess)
|
|
{
|
|
continue;
|
|
}
|
|
bool flag5 = this.<IsFromCache>k__BackingField;
|
|
httprequest5.<DownloadProgressChanged>k__BackingField = flag5;
|
|
}
|
|
if (this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array3;
|
|
if (httprequest3 != 0 && array3 != 0)
|
|
{
|
|
int length2 = array3.Length;
|
|
int num12 = 0;
|
|
this.FeedStreamFragment(array3, num12, length2);
|
|
}
|
|
this.FlushRemainingFragmentBuffer();
|
|
}
|
|
this.ReadHeaders(stream);
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array4 = this.DecodeStream(bufferPoolMemoryStream);
|
|
this.<Data>k__BackingField = array4;
|
|
}
|
|
if (bufferPoolMemoryStream != 0)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
this.CloseDecompressors();
|
|
}
|
|
|
|
// Token: 0x06009842 RID: 38978 RVA: 0x001F074C File Offset: 0x001EE94C
|
|
[Token(Token = "0x6009842")]
|
|
[Address(RVA = "0x229D930", Offset = "0x229C930", VA = "0x18229D930")]
|
|
internal void ReadRaw(Stream stream, long contentLength)
|
|
{
|
|
for (;;)
|
|
{
|
|
int num = 0;
|
|
this.BeginReceiveStreamFragments();
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
httprequest.<DownloadLength>k__BackingField = contentLength;
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
int num2 = this.<StatusCode>k__BackingField;
|
|
if (httprequest <= (ulong)99L || num2 != 304)
|
|
{
|
|
}
|
|
uint num3;
|
|
bool flag = num3 != (uint)0;
|
|
httprequest2.<DownloadProgressChanged>k__BackingField = flag;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text;
|
|
this.VerboseLogging(text);
|
|
}
|
|
if ((this.<IsFromCache>k__BackingField ? 1 : 0) != num)
|
|
{
|
|
}
|
|
if (this.GetFirstHeaderValue("content-encoding") != 0)
|
|
{
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
}
|
|
BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream((int)contentLength);
|
|
int num4 = this.baseRequest.streamFragmentSize;
|
|
uint num5;
|
|
num4 = Math.Max(num4, (int)num5);
|
|
ulong num6;
|
|
byte[] array = VariableSizedBufferPool.Get((long)num4, num6 != 0UL);
|
|
uint num8;
|
|
uint num7 = Math.Min(num8, (uint)contentLength);
|
|
int num9 = array.Length;
|
|
num9 -= num;
|
|
int num10 = Math.Min((int)num7, num9);
|
|
if (num10 > 0)
|
|
{
|
|
num += num10;
|
|
HTTPRequest httprequest3 = this.baseRequest;
|
|
HTTPRequest httprequest4 = this.baseRequest;
|
|
if (!this.IsSuccess)
|
|
{
|
|
}
|
|
uint num11;
|
|
bool flag2 = num11 != (uint)0;
|
|
httprequest4.<DownloadProgressChanged>k__BackingField = flag2;
|
|
if (num < array.Length)
|
|
{
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
}
|
|
int num12 = 0;
|
|
this.FeedStreamFragment(array, num12, num);
|
|
ulong num13;
|
|
byte[] array2 = this.Decompress(array, num12, num, num13 != 0UL);
|
|
while (array2 == 0)
|
|
{
|
|
}
|
|
int length = array2.Length;
|
|
int num14 = 0;
|
|
this.FeedStreamFragment(array2, num14, length);
|
|
VariableSizedBufferPool.Release(array);
|
|
if (this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array3;
|
|
if (array3 != 0)
|
|
{
|
|
int length2 = array3.Length;
|
|
int num15 = 0;
|
|
this.FeedStreamFragment(array3, num15, length2);
|
|
}
|
|
this.FlushRemainingFragmentBuffer();
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array4;
|
|
this.<Data>k__BackingField = array4;
|
|
}
|
|
if (httprequest4 != 0)
|
|
{
|
|
}
|
|
if (num == 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
this.CloseDecompressors();
|
|
}
|
|
|
|
// Token: 0x06009843 RID: 38979 RVA: 0x001F0918 File Offset: 0x001EEB18
|
|
[Token(Token = "0x6009843")]
|
|
[Address(RVA = "0x229E470", Offset = "0x229D470", VA = "0x18229E470")]
|
|
protected void ReadUnknownSize(Stream stream)
|
|
{
|
|
for (;;)
|
|
{
|
|
if (this.<IsFromCache>k__BackingField)
|
|
{
|
|
}
|
|
string firstHeaderValue = this.GetFirstHeaderValue("content-encoding");
|
|
if (string.IsNullOrEmpty(firstHeaderValue))
|
|
{
|
|
}
|
|
bool flag = string.Equals(firstHeaderValue, "gzip");
|
|
BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream();
|
|
int num = this.baseRequest.streamFragmentSize;
|
|
uint num2;
|
|
num = Math.Max(num, (int)num2);
|
|
int num3 = 0;
|
|
byte[] array = VariableSizedBufferPool.Get((long)num, num3 != 0);
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
int length = array.Length;
|
|
string text = string.Format("ReadUnknownSize - buffer size: {0:N0}", length);
|
|
this.VerboseLogging(text);
|
|
}
|
|
int num4 = 0;
|
|
int num5 = 0;
|
|
if (stream == 0 || stream == 0 || (this.baseRequest.<EnableSafeReadOnUnknownContentLength>k__BackingField ? 1 : 0) == num5)
|
|
{
|
|
goto IL_B3;
|
|
}
|
|
if (num4 < array.Length)
|
|
{
|
|
num5++;
|
|
num4++;
|
|
goto IL_B3;
|
|
}
|
|
IL_C3:
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
long <Downloaded>k__BackingField = httprequest2.<Downloaded>k__BackingField;
|
|
httprequest2.<DownloadLength>k__BackingField = <Downloaded>k__BackingField;
|
|
HTTPRequest httprequest3 = this.baseRequest;
|
|
if (this.IsSuccess)
|
|
{
|
|
continue;
|
|
}
|
|
bool flag2 = this.<IsFromCache>k__BackingField;
|
|
httprequest3.<DownloadProgressChanged>k__BackingField = flag2;
|
|
if (num4 < array.Length)
|
|
{
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
int num6 = stream.ReadByte();
|
|
}
|
|
int num7 = 0;
|
|
if (httprequest3 == 0)
|
|
{
|
|
this.FeedStreamFragment(array, num7, num4);
|
|
}
|
|
ulong num8;
|
|
byte[] array2 = this.Decompress(array, num7, num4, num8 != 0UL);
|
|
if (array2 != 0)
|
|
{
|
|
int length2 = array2.Length;
|
|
int num9 = 0;
|
|
this.FeedStreamFragment(array2, num9, length2);
|
|
}
|
|
VariableSizedBufferPool.Release(array);
|
|
if (this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array3;
|
|
if (httprequest3 != 0 && array3 != 0)
|
|
{
|
|
int length3 = array3.Length;
|
|
int num10 = 0;
|
|
this.FeedStreamFragment(array3, num10, length3);
|
|
}
|
|
this.FlushRemainingFragmentBuffer();
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array4;
|
|
this.<Data>k__BackingField = array4;
|
|
}
|
|
int num11 = 0;
|
|
if (stream != 0)
|
|
{
|
|
}
|
|
if (num11 == 0)
|
|
{
|
|
break;
|
|
}
|
|
continue;
|
|
IL_B3:
|
|
int num12 = array.Length;
|
|
num12 -= num4;
|
|
goto IL_C3;
|
|
}
|
|
GZipStream gzipStream = this.decompressorGZipStream;
|
|
if (gzipStream != 0)
|
|
{
|
|
gzipStream.Dispose();
|
|
}
|
|
this.decompressorGZipStream = (ulong)0L;
|
|
BufferPoolMemoryStream bufferPoolMemoryStream2 = this.decompressorInputStream;
|
|
if (bufferPoolMemoryStream2 != 0)
|
|
{
|
|
bufferPoolMemoryStream2.Dispose();
|
|
}
|
|
this.decompressorInputStream = (ulong)0L;
|
|
BufferPoolMemoryStream bufferPoolMemoryStream3 = this.decompressorOutputStream;
|
|
if (bufferPoolMemoryStream3 != 0)
|
|
{
|
|
bufferPoolMemoryStream3.Dispose();
|
|
}
|
|
this.decompressorOutputStream = (ulong)0L;
|
|
}
|
|
|
|
// Token: 0x06009844 RID: 38980 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x6009844")]
|
|
[Address(RVA = "0x229B720", Offset = "0x229A720", VA = "0x18229B720")]
|
|
protected byte[] DecodeStream(BufferPoolMemoryStream streamToDecode)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06009845 RID: 38981 RVA: 0x001F0BAC File Offset: 0x001EEDAC
|
|
[Token(Token = "0x6009845")]
|
|
[Address(RVA = "0x229B6B0", Offset = "0x229A6B0", VA = "0x18229B6B0")]
|
|
private void CloseDecompressors()
|
|
{
|
|
GZipStream gzipStream = this.decompressorGZipStream;
|
|
if (gzipStream != 0)
|
|
{
|
|
gzipStream.Dispose();
|
|
}
|
|
BufferPoolMemoryStream bufferPoolMemoryStream = this.decompressorInputStream;
|
|
int num = 0;
|
|
this.decompressorGZipStream = num;
|
|
if (bufferPoolMemoryStream != 0)
|
|
{
|
|
bufferPoolMemoryStream.Dispose();
|
|
}
|
|
BufferPoolMemoryStream bufferPoolMemoryStream2 = this.decompressorOutputStream;
|
|
this.decompressorInputStream = num;
|
|
if (bufferPoolMemoryStream2 != 0)
|
|
{
|
|
bufferPoolMemoryStream2.Dispose();
|
|
}
|
|
this.decompressorOutputStream = num;
|
|
}
|
|
|
|
// Token: 0x06009846 RID: 38982 RVA: 0x001F0C04 File Offset: 0x001EEE04
|
|
[Token(Token = "0x6009846")]
|
|
[Address(RVA = "0x229B9F0", Offset = "0x229A9F0", VA = "0x18229B9F0")]
|
|
private byte[] Decompress(byte[] data, int offset, int count, bool forceDecompress = false)
|
|
{
|
|
BufferPoolMemoryStream bufferPoolMemoryStream = this.decompressorInputStream;
|
|
if (bufferPoolMemoryStream == 0)
|
|
{
|
|
BufferPoolMemoryStream bufferPoolMemoryStream2 = new BufferPoolMemoryStream(count);
|
|
this.decompressorInputStream = bufferPoolMemoryStream2;
|
|
}
|
|
if (data != 0)
|
|
{
|
|
int num = bufferPoolMemoryStream.ReadByte();
|
|
}
|
|
BufferPoolMemoryStream bufferPoolMemoryStream3 = this.decompressorInputStream;
|
|
if (bufferPoolMemoryStream3.CanWrite < false)
|
|
{
|
|
}
|
|
long position = bufferPoolMemoryStream3.Position;
|
|
GZipStream gzipStream;
|
|
FlushType flushMode = gzipStream.FlushMode;
|
|
BufferPoolMemoryStream bufferPoolMemoryStream4 = new BufferPoolMemoryStream();
|
|
byte[] array;
|
|
VariableSizedBufferPool.Release(array);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009847 RID: 38983 RVA: 0x001F0C6C File Offset: 0x001EEE6C
|
|
[Token(Token = "0x6009847")]
|
|
[Address(RVA = "0x229B580", Offset = "0x229A580", VA = "0x18229B580")]
|
|
protected void BeginReceiveStreamFragments()
|
|
{
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
if (!httprequest.disableCache && httprequest.useStreaming && !this.<IsFromCache>k__BackingField)
|
|
{
|
|
Uri currentUri = httprequest.CurrentUri;
|
|
HTTPMethods <MethodType>k__BackingField = this.baseRequest.<MethodType>k__BackingField;
|
|
if (HTTPCacheService.IsCacheble(currentUri, <MethodType>k__BackingField, this))
|
|
{
|
|
Stream stream = HTTPCacheService.PrepareStreamed(this.baseRequest.CurrentUri, this);
|
|
this.cacheStream = stream;
|
|
}
|
|
}
|
|
this.allFragmentSize = (int)((ulong)0L);
|
|
}
|
|
|
|
// Token: 0x06009848 RID: 38984 RVA: 0x001F0CE4 File Offset: 0x001EEEE4
|
|
[Token(Token = "0x6009848")]
|
|
[Address(RVA = "0x229BDA0", Offset = "0x229ADA0", VA = "0x18229BDA0")]
|
|
protected void FeedStreamFragment(byte[] buffer, int pos, int length)
|
|
{
|
|
int num = 0;
|
|
if (buffer != 0 && length != 0)
|
|
{
|
|
if ((this.baseRequest.useStreaming ? 1 : 0) != num && this.FragmentQueueIsFull())
|
|
{
|
|
this.VerboseLogging("WaitWhileFragmentQueueIsFull");
|
|
if (this.fragmentWaitEvent == 0)
|
|
{
|
|
int num2;
|
|
AutoResetEvent autoResetEvent = new AutoResetEvent(num2 != 0);
|
|
num2 = 0;
|
|
this.fragmentWaitEvent = autoResetEvent;
|
|
}
|
|
AutoResetEvent autoResetEvent2 = this.fragmentWaitEvent;
|
|
}
|
|
byte[] array;
|
|
if (this.fragmentBuffer == num)
|
|
{
|
|
int streamFragmentSize = this.baseRequest.streamFragmentSize;
|
|
int num3 = 0;
|
|
array = VariableSizedBufferPool.Get((long)streamFragmentSize, num3 != 0);
|
|
this.fragmentBuffer = array;
|
|
this.fragmentBufferDataLength = num;
|
|
}
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
int num4 = this.fragmentBufferDataLength;
|
|
int num5 = httprequest.streamFragmentSize;
|
|
if (array > num5)
|
|
{
|
|
num5 -= num4;
|
|
num4 = num5;
|
|
this.FeedStreamFragment(buffer, pos, num4);
|
|
}
|
|
byte[] array2 = this.fragmentBuffer;
|
|
Array.Copy(buffer, pos, array2, num4, length);
|
|
int num6 = this.fragmentBufferDataLength;
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
num6 += length;
|
|
this.fragmentBufferDataLength = num6;
|
|
if (num6 == httprequest2.streamFragmentSize)
|
|
{
|
|
byte[] array3 = this.fragmentBuffer;
|
|
this.AddStreamedFragment(array3);
|
|
this.fragmentBuffer = num;
|
|
this.fragmentBufferDataLength = num;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06009849 RID: 38985 RVA: 0x001F0E0C File Offset: 0x001EF00C
|
|
[Token(Token = "0x6009849")]
|
|
[Address(RVA = "0x229C130", Offset = "0x229B130", VA = "0x18229C130")]
|
|
protected void FlushRemainingFragmentBuffer()
|
|
{
|
|
int num = 0;
|
|
if (this.fragmentBuffer != num)
|
|
{
|
|
byte[] array = this.fragmentBuffer;
|
|
this.AddStreamedFragment(array);
|
|
this.fragmentBuffer = num;
|
|
this.fragmentBufferDataLength = num;
|
|
}
|
|
Stream stream = this.cacheStream;
|
|
if (stream != 0)
|
|
{
|
|
stream.Dispose();
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
this.cacheStream = num;
|
|
Uri currentUri = httprequest.CurrentUri;
|
|
int num2 = this.allFragmentSize;
|
|
HTTPCacheService.SetBodyLength(currentUri, num2);
|
|
}
|
|
AutoResetEvent autoResetEvent = this.fragmentWaitEvent;
|
|
this.fragmentWaitEvent = num;
|
|
if (autoResetEvent != 0)
|
|
{
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600984A RID: 38986 RVA: 0x001F0E94 File Offset: 0x001EF094
|
|
[Token(Token = "0x600984A")]
|
|
[Address(RVA = "0x229B360", Offset = "0x229A360", VA = "0x18229B360")]
|
|
protected void AddStreamedFragment(byte[] buffer)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
object syncRoot = this.SyncRoot;
|
|
if ((this.<IsCacheOnly>k__BackingField ? 1 : 0) == num)
|
|
{
|
|
List<byte[]> list = this.streamedFragments;
|
|
if (list == 0)
|
|
{
|
|
List<byte[]> list2 = new List();
|
|
this.streamedFragments = list2;
|
|
}
|
|
list.Add(buffer);
|
|
}
|
|
if (HTTPManager.Logger == 0 && buffer != 0 && this.streamedFragments != (ulong)0L)
|
|
{
|
|
int length = buffer.Length;
|
|
List<byte[]> list3 = this.streamedFragments;
|
|
string text = string.Format("AddStreamedFragment buffer length: {0:N0} streamedFragments: {1:N0}", length, length);
|
|
this.VerboseLogging(text);
|
|
}
|
|
Stream stream = this.cacheStream;
|
|
if (stream != 0)
|
|
{
|
|
int num2 = stream.ReadByte();
|
|
int length2 = buffer.Length;
|
|
}
|
|
Monitor.Exit(syncRoot);
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x0600984B RID: 38987 RVA: 0x001F0F58 File Offset: 0x001EF158
|
|
[Token(Token = "0x600984B")]
|
|
[Address(RVA = "0x229F340", Offset = "0x229E340", VA = "0x18229F340")]
|
|
protected void WaitWhileFragmentQueueIsFull()
|
|
{
|
|
if (this.baseRequest.useStreaming && this.FragmentQueueIsFull())
|
|
{
|
|
this.VerboseLogging("WaitWhileFragmentQueueIsFull");
|
|
if (this.fragmentWaitEvent == 0)
|
|
{
|
|
int num;
|
|
AutoResetEvent autoResetEvent = new AutoResetEvent(num != 0);
|
|
num = 0;
|
|
this.fragmentWaitEvent = autoResetEvent;
|
|
}
|
|
AutoResetEvent autoResetEvent2 = this.fragmentWaitEvent;
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600984C RID: 38988 RVA: 0x001F0FB8 File Offset: 0x001EF1B8
|
|
[Token(Token = "0x600984C")]
|
|
[Address(RVA = "0x229C270", Offset = "0x229B270", VA = "0x18229C270")]
|
|
private bool FragmentQueueIsFull()
|
|
{
|
|
bool flag;
|
|
for (;;)
|
|
{
|
|
int num = 0;
|
|
object syncRoot = this.SyncRoot;
|
|
List<byte[]> list = this.streamedFragments;
|
|
if (list == 0)
|
|
{
|
|
}
|
|
int size = list._size;
|
|
int <MaxFragmentQueueLength>k__BackingField = this.baseRequest.<MaxFragmentQueueLength>k__BackingField;
|
|
flag = size >= <MaxFragmentQueueLength>k__BackingField;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
int size2 = this.streamedFragments._size;
|
|
int <MaxFragmentQueueLength>k__BackingField2 = this.baseRequest.<MaxFragmentQueueLength>k__BackingField;
|
|
string text = string.Format("HasFragmentsInQueue - {0} / {1}", size2, <MaxFragmentQueueLength>k__BackingField2);
|
|
this.VerboseLogging(text);
|
|
Monitor.Exit(syncRoot);
|
|
if (num == 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x0600984D RID: 38989 RVA: 0x001F1058 File Offset: 0x001EF258
|
|
[Token(Token = "0x600984D")]
|
|
[Address(RVA = "0x229C7B0", Offset = "0x229B7B0", VA = "0x18229C7B0")]
|
|
public List<byte[]> GetStreamedFragments()
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
object syncRoot = this.SyncRoot;
|
|
List<byte[]> list = this.streamedFragments;
|
|
if (list != 0)
|
|
{
|
|
List<byte[]> list2 = new List(list);
|
|
this.streamedFragments.Clear();
|
|
if (this.fragmentWaitEvent != 0)
|
|
{
|
|
bool flag = this.fragmentWaitEvent.Set();
|
|
}
|
|
BestHTTP.Logger.ILogger logger = HTTPManager.Logger;
|
|
int num2 = 0;
|
|
if (logger == 0)
|
|
{
|
|
string text = num2.ToString();
|
|
string text2 = string.Format("GetStreamedFragments - returning with {0:N0} fragments", text);
|
|
this.VerboseLogging(text2);
|
|
}
|
|
}
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
this.VerboseLogging("GetStreamedFragments - no fragments, returning with null");
|
|
}
|
|
Monitor.Exit(syncRoot);
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600984E RID: 38990 RVA: 0x001F1114 File Offset: 0x001EF314
|
|
[Token(Token = "0x600984E")]
|
|
[Address(RVA = "0x229CAD0", Offset = "0x229BAD0", VA = "0x18229CAD0")]
|
|
internal bool HasStreamedFragments()
|
|
{
|
|
int num;
|
|
bool flag;
|
|
do
|
|
{
|
|
num = 0;
|
|
object syncRoot = this.SyncRoot;
|
|
List<byte[]> list = this.streamedFragments;
|
|
if (list == 0)
|
|
{
|
|
}
|
|
int size = list._size;
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
flag = size >= httprequest.<MaxFragmentQueueLength>k__BackingField;
|
|
Monitor.Exit(syncRoot);
|
|
}
|
|
while (num != 0);
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x0600984F RID: 38991 RVA: 0x001F1168 File Offset: 0x001EF368
|
|
[Token(Token = "0x600984F")]
|
|
[Address(RVA = "0x229BFE0", Offset = "0x229AFE0", VA = "0x18229BFE0")]
|
|
internal void FinishStreaming()
|
|
{
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
this.VerboseLogging("FinishStreaming");
|
|
}
|
|
this.<IsStreamingFinished>k__BackingField = true;
|
|
Stream stream = this.Stream;
|
|
if (stream == 0 || stream != 0)
|
|
{
|
|
}
|
|
Stream stream2 = this.cacheStream;
|
|
this.Stream = (ulong)0L;
|
|
if (stream2 != 0)
|
|
{
|
|
stream2.Dispose();
|
|
this.cacheStream = (ulong)0L;
|
|
}
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
|
|
// Token: 0x06009850 RID: 38992 RVA: 0x001F11D4 File Offset: 0x001EF3D4
|
|
[Token(Token = "0x6009850")]
|
|
[Address(RVA = "0x229F210", Offset = "0x229E210", VA = "0x18229F210")]
|
|
private void VerboseLogging(string str)
|
|
{
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
BestHTTP.Logger.ILogger logger = HTTPManager.Logger;
|
|
int hashCode = this.baseRequest.CurrentUri.GetHashCode();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06009851 RID: 38993 RVA: 0x001F120C File Offset: 0x001EF40C
|
|
[Token(Token = "0x6009851")]
|
|
[Address(RVA = "0x229BCC0", Offset = "0x229ACC0", VA = "0x18229BCC0", Slot = "4")]
|
|
public void Dispose()
|
|
{
|
|
Stream stream = this.Stream;
|
|
if (stream == 0 || stream != 0)
|
|
{
|
|
}
|
|
Stream stream2 = this.cacheStream;
|
|
this.Stream = (ulong)0L;
|
|
if (stream2 != 0)
|
|
{
|
|
stream2.Dispose();
|
|
this.cacheStream = (ulong)0L;
|
|
}
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
|
|
// Token: 0x040066C7 RID: 26311
|
|
[Token(Token = "0x40066C7")]
|
|
internal const byte CR = 13;
|
|
|
|
// Token: 0x040066C8 RID: 26312
|
|
[Token(Token = "0x40066C8")]
|
|
internal const byte LF = 10;
|
|
|
|
// Token: 0x040066C9 RID: 26313
|
|
[Token(Token = "0x40066C9")]
|
|
public const int MinBufferSize = 4096;
|
|
|
|
// Token: 0x040066D7 RID: 26327
|
|
[FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x40066D7")]
|
|
protected string dataAsText;
|
|
|
|
// Token: 0x040066D8 RID: 26328
|
|
[FieldOffset(Offset = "0x68")]
|
|
[Token(Token = "0x40066D8")]
|
|
protected Texture2D texture;
|
|
|
|
// Token: 0x040066DA RID: 26330
|
|
[FieldOffset(Offset = "0x78")]
|
|
[Token(Token = "0x40066DA")]
|
|
internal HTTPRequest baseRequest;
|
|
|
|
// Token: 0x040066DB RID: 26331
|
|
[FieldOffset(Offset = "0x80")]
|
|
[Token(Token = "0x40066DB")]
|
|
protected Stream Stream;
|
|
|
|
// Token: 0x040066DC RID: 26332
|
|
[FieldOffset(Offset = "0x88")]
|
|
[Token(Token = "0x40066DC")]
|
|
protected List<byte[]> streamedFragments;
|
|
|
|
// Token: 0x040066DD RID: 26333
|
|
[FieldOffset(Offset = "0x90")]
|
|
[Token(Token = "0x40066DD")]
|
|
protected object SyncRoot;
|
|
|
|
// Token: 0x040066DE RID: 26334
|
|
[FieldOffset(Offset = "0x98")]
|
|
[Token(Token = "0x40066DE")]
|
|
protected byte[] fragmentBuffer;
|
|
|
|
// Token: 0x040066DF RID: 26335
|
|
[FieldOffset(Offset = "0xA0")]
|
|
[Token(Token = "0x40066DF")]
|
|
protected int fragmentBufferDataLength;
|
|
|
|
// Token: 0x040066E0 RID: 26336
|
|
[FieldOffset(Offset = "0xA8")]
|
|
[Token(Token = "0x40066E0")]
|
|
protected Stream cacheStream;
|
|
|
|
// Token: 0x040066E1 RID: 26337
|
|
[FieldOffset(Offset = "0xB0")]
|
|
[Token(Token = "0x40066E1")]
|
|
protected int allFragmentSize;
|
|
|
|
// Token: 0x040066E2 RID: 26338
|
|
[FieldOffset(Offset = "0xB8")]
|
|
[Token(Token = "0x40066E2")]
|
|
private BufferPoolMemoryStream decompressorInputStream;
|
|
|
|
// Token: 0x040066E3 RID: 26339
|
|
[FieldOffset(Offset = "0xC0")]
|
|
[Token(Token = "0x40066E3")]
|
|
private BufferPoolMemoryStream decompressorOutputStream;
|
|
|
|
// Token: 0x040066E4 RID: 26340
|
|
[FieldOffset(Offset = "0xC8")]
|
|
[Token(Token = "0x40066E4")]
|
|
private GZipStream decompressorGZipStream;
|
|
|
|
// Token: 0x040066E5 RID: 26341
|
|
[Token(Token = "0x40066E5")]
|
|
private const int MinLengthToDecompress = 256;
|
|
|
|
// Token: 0x040066E6 RID: 26342
|
|
[FieldOffset(Offset = "0xD0")]
|
|
[Token(Token = "0x40066E6")]
|
|
private AutoResetEvent fragmentWaitEvent;
|
|
}
|
|
}
|