1451 lines
45 KiB
C#
1451 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: 0x020018A6 RID: 6310
|
|
[Token(Token = "0x20018A6")]
|
|
public class HTTPResponse : IDisposable
|
|
{
|
|
// Token: 0x17001793 RID: 6035
|
|
// (get) Token: 0x06009446 RID: 37958 RVA: 0x001E6B14 File Offset: 0x001E4D14
|
|
// (set) Token: 0x06009447 RID: 37959 RVA: 0x001E6B28 File Offset: 0x001E4D28
|
|
[Token(Token = "0x17001793")]
|
|
public int VersionMajor
|
|
{
|
|
[Token(Token = "0x6009446")]
|
|
[Address(RVA = "0x3FA560", Offset = "0x3F9360", VA = "0x1803FA560")]
|
|
get;
|
|
[Token(Token = "0x6009447")]
|
|
[Address(RVA = "0x536480", Offset = "0x535280", VA = "0x180536480")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001794 RID: 6036
|
|
// (get) Token: 0x06009448 RID: 37960 RVA: 0x001E6B3C File Offset: 0x001E4D3C
|
|
// (set) Token: 0x06009449 RID: 37961 RVA: 0x001E6B50 File Offset: 0x001E4D50
|
|
[Token(Token = "0x17001794")]
|
|
public int VersionMinor
|
|
{
|
|
[Token(Token = "0x6009448")]
|
|
[Address(RVA = "0x495080", Offset = "0x493E80", VA = "0x180495080")]
|
|
get;
|
|
[Token(Token = "0x6009449")]
|
|
[Address(RVA = "0x52EC20", Offset = "0x52DA20", VA = "0x18052EC20")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001795 RID: 6037
|
|
// (get) Token: 0x0600944A RID: 37962 RVA: 0x001E6B64 File Offset: 0x001E4D64
|
|
// (set) Token: 0x0600944B RID: 37963 RVA: 0x001E6B78 File Offset: 0x001E4D78
|
|
[Token(Token = "0x17001795")]
|
|
public int StatusCode
|
|
{
|
|
[Token(Token = "0x600944A")]
|
|
[Address(RVA = "0x40B720", Offset = "0x40A520", VA = "0x18040B720")]
|
|
get;
|
|
[Token(Token = "0x600944B")]
|
|
[Address(RVA = "0x41F740", Offset = "0x41E540", VA = "0x18041F740")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001796 RID: 6038
|
|
// (get) Token: 0x0600944C RID: 37964 RVA: 0x001E6B8C File Offset: 0x001E4D8C
|
|
[Token(Token = "0x17001796")]
|
|
public bool IsSuccess
|
|
{
|
|
[Token(Token = "0x600944C")]
|
|
[Address(RVA = "0x1727BB0", Offset = "0x17269B0", VA = "0x181727BB0")]
|
|
get
|
|
{
|
|
int num = this.<StatusCode>k__BackingField;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001797 RID: 6039
|
|
// (get) Token: 0x0600944D RID: 37965 RVA: 0x001E6BAC File Offset: 0x001E4DAC
|
|
// (set) Token: 0x0600944E RID: 37966 RVA: 0x001E6BC0 File Offset: 0x001E4DC0
|
|
[Token(Token = "0x17001797")]
|
|
public string Message
|
|
{
|
|
[Token(Token = "0x600944D")]
|
|
[Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400")]
|
|
get;
|
|
[Token(Token = "0x600944E")]
|
|
[Address(RVA = "0x460F90", Offset = "0x45FD90", VA = "0x180460F90")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001798 RID: 6040
|
|
// (get) Token: 0x0600944F RID: 37967 RVA: 0x001E6BD4 File Offset: 0x001E4DD4
|
|
// (set) Token: 0x06009450 RID: 37968 RVA: 0x001E6BE8 File Offset: 0x001E4DE8
|
|
[Token(Token = "0x17001798")]
|
|
public bool IsStreamed
|
|
{
|
|
[Token(Token = "0x600944F")]
|
|
[Address(RVA = "0x494270", Offset = "0x493070", VA = "0x180494270")]
|
|
get;
|
|
[Token(Token = "0x6009450")]
|
|
[Address(RVA = "0x494500", Offset = "0x493300", VA = "0x180494500")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001799 RID: 6041
|
|
// (get) Token: 0x06009451 RID: 37969 RVA: 0x001E6BFC File Offset: 0x001E4DFC
|
|
// (set) Token: 0x06009452 RID: 37970 RVA: 0x001E6C10 File Offset: 0x001E4E10
|
|
[Token(Token = "0x17001799")]
|
|
public bool IsStreamingFinished
|
|
{
|
|
[Token(Token = "0x6009451")]
|
|
[Address(RVA = "0x494260", Offset = "0x493060", VA = "0x180494260")]
|
|
get;
|
|
[Token(Token = "0x6009452")]
|
|
[Address(RVA = "0x4944F0", Offset = "0x4932F0", VA = "0x1804944F0")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x1700179A RID: 6042
|
|
// (get) Token: 0x06009453 RID: 37971 RVA: 0x001E6C24 File Offset: 0x001E4E24
|
|
// (set) Token: 0x06009454 RID: 37972 RVA: 0x001E6C38 File Offset: 0x001E4E38
|
|
[Token(Token = "0x1700179A")]
|
|
public bool IsFromCache
|
|
{
|
|
[Token(Token = "0x6009453")]
|
|
[Address(RVA = "0x494240", Offset = "0x493040", VA = "0x180494240")]
|
|
get;
|
|
[Token(Token = "0x6009454")]
|
|
[Address(RVA = "0x6CEB60", Offset = "0x6CD960", VA = "0x1806CEB60")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x1700179B RID: 6043
|
|
// (get) Token: 0x06009455 RID: 37973 RVA: 0x001E6C4C File Offset: 0x001E4E4C
|
|
// (set) Token: 0x06009456 RID: 37974 RVA: 0x001E6C60 File Offset: 0x001E4E60
|
|
[Token(Token = "0x1700179B")]
|
|
public HTTPCacheFileInfo CacheFileInfo
|
|
{
|
|
[Token(Token = "0x6009455")]
|
|
[Address(RVA = "0x3FA180", Offset = "0x3F8F80", VA = "0x1803FA180")]
|
|
get;
|
|
[Token(Token = "0x6009456")]
|
|
[Address(RVA = "0x4437E0", Offset = "0x4425E0", VA = "0x1804437E0")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x1700179C RID: 6044
|
|
// (get) Token: 0x06009457 RID: 37975 RVA: 0x001E6C74 File Offset: 0x001E4E74
|
|
// (set) Token: 0x06009458 RID: 37976 RVA: 0x001E6C88 File Offset: 0x001E4E88
|
|
[Token(Token = "0x1700179C")]
|
|
public bool IsCacheOnly
|
|
{
|
|
[Token(Token = "0x6009457")]
|
|
[Address(RVA = "0x43A970", Offset = "0x439770", VA = "0x18043A970")]
|
|
get;
|
|
[Token(Token = "0x6009458")]
|
|
[Address(RVA = "0x43ABB0", Offset = "0x4399B0", VA = "0x18043ABB0")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x1700179D RID: 6045
|
|
// (get) Token: 0x06009459 RID: 37977 RVA: 0x001E6C9C File Offset: 0x001E4E9C
|
|
// (set) Token: 0x0600945A RID: 37978 RVA: 0x001E6CB0 File Offset: 0x001E4EB0
|
|
[Token(Token = "0x1700179D")]
|
|
public Dictionary<string, List<string>> Headers
|
|
{
|
|
[Token(Token = "0x6009459")]
|
|
[Address(RVA = "0x408890", Offset = "0x407690", VA = "0x180408890")]
|
|
get;
|
|
[Token(Token = "0x600945A")]
|
|
[Address(RVA = "0x403B30", Offset = "0x402930", VA = "0x180403B30")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x1700179E RID: 6046
|
|
// (get) Token: 0x0600945B RID: 37979 RVA: 0x001E6CC4 File Offset: 0x001E4EC4
|
|
// (set) Token: 0x0600945C RID: 37980 RVA: 0x001E6CD8 File Offset: 0x001E4ED8
|
|
[Token(Token = "0x1700179E")]
|
|
public byte[] Data
|
|
{
|
|
[Token(Token = "0x600945B")]
|
|
[Address(RVA = "0x3FA170", Offset = "0x3F8F70", VA = "0x1803FA170")]
|
|
get;
|
|
[Token(Token = "0x600945C")]
|
|
[Address(RVA = "0x46AA50", Offset = "0x469850", VA = "0x18046AA50")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x1700179F RID: 6047
|
|
// (get) Token: 0x0600945D RID: 37981 RVA: 0x001E6CEC File Offset: 0x001E4EEC
|
|
// (set) Token: 0x0600945E RID: 37982 RVA: 0x001E6D00 File Offset: 0x001E4F00
|
|
[Token(Token = "0x1700179F")]
|
|
public bool IsUpgraded
|
|
{
|
|
[Token(Token = "0x600945D")]
|
|
[Address(RVA = "0x7722A0", Offset = "0x7710A0", VA = "0x1807722A0")]
|
|
get;
|
|
[Token(Token = "0x600945E")]
|
|
[Address(RVA = "0x781F80", Offset = "0x780D80", VA = "0x180781F80")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x170017A0 RID: 6048
|
|
// (get) Token: 0x0600945F RID: 37983 RVA: 0x001E6D14 File Offset: 0x001E4F14
|
|
// (set) Token: 0x06009460 RID: 37984 RVA: 0x001E6D28 File Offset: 0x001E4F28
|
|
[Token(Token = "0x170017A0")]
|
|
public List<Cookie> Cookies
|
|
{
|
|
[Token(Token = "0x600945F")]
|
|
[Address(RVA = "0x423D40", Offset = "0x422B40", VA = "0x180423D40")]
|
|
get;
|
|
[Token(Token = "0x6009460")]
|
|
[Address(RVA = "0x466B90", Offset = "0x465990", VA = "0x180466B90")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x170017A1 RID: 6049
|
|
// (get) Token: 0x06009461 RID: 37985 RVA: 0x001E6D3C File Offset: 0x001E4F3C
|
|
[Token(Token = "0x170017A1")]
|
|
public string DataAsText
|
|
{
|
|
[Token(Token = "0x6009461")]
|
|
[Address(RVA = "0x1727A40", Offset = "0x1726840", VA = "0x181727A40")]
|
|
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: 0x170017A2 RID: 6050
|
|
// (get) Token: 0x06009462 RID: 37986 RVA: 0x001E6D94 File Offset: 0x001E4F94
|
|
[Token(Token = "0x170017A2")]
|
|
public Texture2D DataAsTexture2D
|
|
{
|
|
[Token(Token = "0x6009462")]
|
|
[Address(RVA = "0x1727AE0", Offset = "0x17268E0", VA = "0x181727AE0")]
|
|
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: 0x170017A3 RID: 6051
|
|
// (get) Token: 0x06009463 RID: 37987 RVA: 0x001E6DF8 File Offset: 0x001E4FF8
|
|
// (set) Token: 0x06009464 RID: 37988 RVA: 0x001E6E0C File Offset: 0x001E500C
|
|
[Token(Token = "0x170017A3")]
|
|
public bool IsClosedManually
|
|
{
|
|
[Token(Token = "0x6009463")]
|
|
[Address(RVA = "0x567CF0", Offset = "0x566AF0", VA = "0x180567CF0")]
|
|
get;
|
|
[Token(Token = "0x6009464")]
|
|
[Address(RVA = "0x567D40", Offset = "0x566B40", VA = "0x180567D40")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x06009465 RID: 37989 RVA: 0x001E6E20 File Offset: 0x001E5020
|
|
[Token(Token = "0x6009465")]
|
|
[Address(RVA = "0x1727980", Offset = "0x1726780", VA = "0x181727980")]
|
|
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: 0x06009466 RID: 37990 RVA: 0x001E6E78 File Offset: 0x001E5078
|
|
[Token(Token = "0x6009466")]
|
|
[Address(RVA = "0x1726F40", Offset = "0x1725D40", VA = "0x181726F40", 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)
|
|
{
|
|
goto IL_291;
|
|
}
|
|
int num4 = int.Parse(text8);
|
|
this.<StatusCode>k__BackingField = num4;
|
|
int stringLength = text8.m_stringLength;
|
|
if (stringLength > 0)
|
|
{
|
|
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)
|
|
{
|
|
goto IL_1DF;
|
|
}
|
|
string text10 = this.<Message>k__BackingField;
|
|
string text11 = string.Format("Status Message: '{0}'", text10);
|
|
this.VerboseLogging(text11);
|
|
}
|
|
BestHTTP.Logger.ILogger logger2 = HTTPManager.Logger;
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
if (!httprequest.<IsRedirected>k__BackingField)
|
|
{
|
|
continue;
|
|
}
|
|
int hashCode = httprequest.<RedirectUri>k__BackingField.m_String.GetHashCode();
|
|
string text12 = string.Format("{0} - Skipping Status Message reading!", hashCode);
|
|
string empty = string.Empty;
|
|
this.<Message>k__BackingField = empty;
|
|
IL_1DF:
|
|
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;
|
|
}
|
|
}
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
if (!httprequest2.<DisableRetry>k__BackingField && !httprequest2.<DisableRetry>k__BackingField)
|
|
{
|
|
goto Block_13;
|
|
}
|
|
}
|
|
return this.ReadPayload(forceReadRawContentLength);
|
|
Block_13:
|
|
int num5 = 0;
|
|
BestHTTP.Logger.ILogger logger3 = HTTPManager.Logger;
|
|
int hashCode2 = num5.GetHashCode();
|
|
string text13 = string.Format("{0} - Failed to read Status Line! Retry is enabled, returning with false.", hashCode2);
|
|
IL_291:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06009467 RID: 37991 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x6009467")]
|
|
[Address(RVA = "0x1725CA0", Offset = "0x1724AA0", VA = "0x181725CA0")]
|
|
protected bool ReadPayload(int forceReadRawContentLength)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06009468 RID: 37992 RVA: 0x001E711C File Offset: 0x001E531C
|
|
[Token(Token = "0x6009468")]
|
|
[Address(RVA = "0x1725B50", Offset = "0x1724950", VA = "0x181725B50")]
|
|
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: 0x06009469 RID: 37993 RVA: 0x001E717C File Offset: 0x001E537C
|
|
[Token(Token = "0x6009469")]
|
|
[Address(RVA = "0x1723820", Offset = "0x1722620", VA = "0x181723820")]
|
|
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);
|
|
dictionary2.Add(text, list);
|
|
}
|
|
list.Add(value);
|
|
}
|
|
|
|
// Token: 0x0600946A RID: 37994 RVA: 0x001E71D4 File Offset: 0x001E53D4
|
|
[Token(Token = "0x600946A")]
|
|
[Address(RVA = "0x1724A00", Offset = "0x1723800", VA = "0x181724A00")]
|
|
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: 0x0600946B RID: 37995 RVA: 0x001E7208 File Offset: 0x001E5408
|
|
[Token(Token = "0x600946B")]
|
|
[Address(RVA = "0x1724950", Offset = "0x1723750", VA = "0x181724950")]
|
|
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: 0x0600946C RID: 37996 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x600946C")]
|
|
[Address(RVA = "0x1724F30", Offset = "0x1723D30", VA = "0x181724F30")]
|
|
public bool HasHeaderWithValue(string headerName, string value)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600946D RID: 37997 RVA: 0x001E7240 File Offset: 0x001E5440
|
|
[Token(Token = "0x600946D")]
|
|
[Address(RVA = "0x1724FE0", Offset = "0x1723DE0", VA = "0x181724FE0")]
|
|
public bool HasHeader(string headerName)
|
|
{
|
|
return this.GetHeaderValues(headerName) != 0;
|
|
}
|
|
|
|
// Token: 0x0600946E RID: 37998 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x600946E")]
|
|
[Address(RVA = "0x1724AA0", Offset = "0x17238A0", VA = "0x181724AA0")]
|
|
public HTTPRange GetRange()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600946F RID: 37999 RVA: 0x001E725C File Offset: 0x001E545C
|
|
[Token(Token = "0x600946F")]
|
|
[Address(RVA = "0x17263F0", Offset = "0x17251F0", VA = "0x1817263F0")]
|
|
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: 0x06009470 RID: 38000 RVA: 0x001E72D0 File Offset: 0x001E54D0
|
|
[Token(Token = "0x6009470")]
|
|
[Address(RVA = "0x17266C0", Offset = "0x17254C0", VA = "0x1817266C0")]
|
|
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: 0x06009471 RID: 38001 RVA: 0x001E734C File Offset: 0x001E554C
|
|
[Token(Token = "0x6009471")]
|
|
[Address(RVA = "0x17250E0", Offset = "0x1723EE0", VA = "0x1817250E0")]
|
|
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: 0x06009472 RID: 38002 RVA: 0x001E73B0 File Offset: 0x001E55B0
|
|
[Token(Token = "0x6009472")]
|
|
[Address(RVA = "0x1725350", Offset = "0x1724150", VA = "0x181725350")]
|
|
protected int ReadChunkLength(Stream stream)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (06009472)
|
|
|
|
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: 0x06009473 RID: 38003 RVA: 0x001E740C File Offset: 0x001E560C
|
|
[Token(Token = "0x6009473")]
|
|
[Address(RVA = "0x1725470", Offset = "0x1724270", VA = "0x181725470")]
|
|
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: 0x06009474 RID: 38004 RVA: 0x001E76BC File Offset: 0x001E58BC
|
|
[Token(Token = "0x6009474")]
|
|
[Address(RVA = "0x1725E60", Offset = "0x1724C60", VA = "0x181725E60")]
|
|
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: 0x06009475 RID: 38005 RVA: 0x001E7888 File Offset: 0x001E5A88
|
|
[Token(Token = "0x6009475")]
|
|
[Address(RVA = "0x17269A0", Offset = "0x17257A0", VA = "0x1817269A0")]
|
|
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: 0x06009476 RID: 38006 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x6009476")]
|
|
[Address(RVA = "0x1723D00", Offset = "0x1722B00", VA = "0x181723D00")]
|
|
protected byte[] DecodeStream(BufferPoolMemoryStream streamToDecode)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06009477 RID: 38007 RVA: 0x001E7B1C File Offset: 0x001E5D1C
|
|
[Token(Token = "0x6009477")]
|
|
[Address(RVA = "0x1723C90", Offset = "0x1722A90", VA = "0x181723C90")]
|
|
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: 0x06009478 RID: 38008 RVA: 0x001E7B74 File Offset: 0x001E5D74
|
|
[Token(Token = "0x6009478")]
|
|
[Address(RVA = "0x1723FD0", Offset = "0x1722DD0", VA = "0x181723FD0")]
|
|
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: 0x06009479 RID: 38009 RVA: 0x001E7BDC File Offset: 0x001E5DDC
|
|
[Token(Token = "0x6009479")]
|
|
[Address(RVA = "0x1723B60", Offset = "0x1722960", VA = "0x181723B60")]
|
|
protected void BeginReceiveStreamFragments()
|
|
{
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
if (!httprequest.disableCache && httprequest.useStreaming && !this.<IsFromCache>k__BackingField)
|
|
{
|
|
if (httprequest.<IsRedirected>k__BackingField)
|
|
{
|
|
}
|
|
Uri <Uri>k__BackingField = httprequest.<Uri>k__BackingField;
|
|
HTTPMethods <MethodType>k__BackingField = httprequest.<MethodType>k__BackingField;
|
|
if (HTTPCacheService.IsCacheble(<Uri>k__BackingField, <MethodType>k__BackingField, this))
|
|
{
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
if (httprequest2.<IsRedirected>k__BackingField)
|
|
{
|
|
}
|
|
Stream stream = HTTPCacheService.PrepareStreamed(httprequest2.<Uri>k__BackingField, this);
|
|
this.cacheStream = stream;
|
|
}
|
|
}
|
|
this.allFragmentSize = (int)((ulong)0L);
|
|
}
|
|
|
|
// Token: 0x0600947A RID: 38010 RVA: 0x001E7C64 File Offset: 0x001E5E64
|
|
[Token(Token = "0x600947A")]
|
|
[Address(RVA = "0x1724380", Offset = "0x1723180", VA = "0x181724380")]
|
|
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: 0x0600947B RID: 38011 RVA: 0x001E7D8C File Offset: 0x001E5F8C
|
|
[Token(Token = "0x600947B")]
|
|
[Address(RVA = "0x1724650", Offset = "0x1723450", VA = "0x181724650")]
|
|
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;
|
|
if ((httprequest.<IsRedirected>k__BackingField ? 1 : 0) != num)
|
|
{
|
|
}
|
|
Uri <Uri>k__BackingField = httprequest.<Uri>k__BackingField;
|
|
int num2 = this.allFragmentSize;
|
|
HTTPCacheService.SetBodyLength(<Uri>k__BackingField, num2);
|
|
}
|
|
AutoResetEvent autoResetEvent = this.fragmentWaitEvent;
|
|
this.fragmentWaitEvent = num;
|
|
if (autoResetEvent != 0)
|
|
{
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600947C RID: 38012 RVA: 0x001E7E20 File Offset: 0x001E6020
|
|
[Token(Token = "0x600947C")]
|
|
[Address(RVA = "0x1723940", Offset = "0x1722740", VA = "0x181723940")]
|
|
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: 0x0600947D RID: 38013 RVA: 0x001E7EE4 File Offset: 0x001E60E4
|
|
[Token(Token = "0x600947D")]
|
|
[Address(RVA = "0x1727880", Offset = "0x1726680", VA = "0x181727880")]
|
|
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: 0x0600947E RID: 38014 RVA: 0x001E7F44 File Offset: 0x001E6144
|
|
[Token(Token = "0x600947E")]
|
|
[Address(RVA = "0x17247A0", Offset = "0x17235A0", VA = "0x1817247A0")]
|
|
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: 0x0600947F RID: 38015 RVA: 0x001E7FE4 File Offset: 0x001E61E4
|
|
[Token(Token = "0x600947F")]
|
|
[Address(RVA = "0x1724CE0", Offset = "0x1723AE0", VA = "0x181724CE0")]
|
|
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: 0x06009480 RID: 38016 RVA: 0x001E80A0 File Offset: 0x001E62A0
|
|
[Token(Token = "0x6009480")]
|
|
[Address(RVA = "0x1725000", Offset = "0x1723E00", VA = "0x181725000")]
|
|
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: 0x06009481 RID: 38017 RVA: 0x001E80F4 File Offset: 0x001E62F4
|
|
[Token(Token = "0x6009481")]
|
|
[Address(RVA = "0x17245C0", Offset = "0x17233C0", VA = "0x1817245C0")]
|
|
internal void FinishStreaming()
|
|
{
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
this.VerboseLogging("FinishStreaming");
|
|
}
|
|
this.<IsStreamingFinished>k__BackingField = true;
|
|
this.Dispose();
|
|
}
|
|
|
|
// Token: 0x06009482 RID: 38018 RVA: 0x001E812C File Offset: 0x001E632C
|
|
[Token(Token = "0x6009482")]
|
|
[Address(RVA = "0x1727750", Offset = "0x1726550", VA = "0x181727750")]
|
|
private void VerboseLogging(string str)
|
|
{
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
BestHTTP.Logger.ILogger logger = HTTPManager.Logger;
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
if (httprequest.<IsRedirected>k__BackingField)
|
|
{
|
|
}
|
|
int hashCode = httprequest.<Uri>k__BackingField.GetHashCode();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06009483 RID: 38019 RVA: 0x001E8170 File Offset: 0x001E6370
|
|
[Token(Token = "0x6009483")]
|
|
[Address(RVA = "0x17242A0", Offset = "0x17230A0", VA = "0x1817242A0", 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: 0x0400650E RID: 25870
|
|
[Token(Token = "0x400650E")]
|
|
internal const byte CR = 13;
|
|
|
|
// Token: 0x0400650F RID: 25871
|
|
[Token(Token = "0x400650F")]
|
|
internal const byte LF = 10;
|
|
|
|
// Token: 0x04006510 RID: 25872
|
|
[Token(Token = "0x4006510")]
|
|
public const int MinBufferSize = 4096;
|
|
|
|
// Token: 0x0400651E RID: 25886
|
|
[FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x400651E")]
|
|
protected string dataAsText;
|
|
|
|
// Token: 0x0400651F RID: 25887
|
|
[FieldOffset(Offset = "0x68")]
|
|
[Token(Token = "0x400651F")]
|
|
protected Texture2D texture;
|
|
|
|
// Token: 0x04006521 RID: 25889
|
|
[FieldOffset(Offset = "0x78")]
|
|
[Token(Token = "0x4006521")]
|
|
internal HTTPRequest baseRequest;
|
|
|
|
// Token: 0x04006522 RID: 25890
|
|
[FieldOffset(Offset = "0x80")]
|
|
[Token(Token = "0x4006522")]
|
|
protected Stream Stream;
|
|
|
|
// Token: 0x04006523 RID: 25891
|
|
[FieldOffset(Offset = "0x88")]
|
|
[Token(Token = "0x4006523")]
|
|
protected List<byte[]> streamedFragments;
|
|
|
|
// Token: 0x04006524 RID: 25892
|
|
[FieldOffset(Offset = "0x90")]
|
|
[Token(Token = "0x4006524")]
|
|
protected object SyncRoot;
|
|
|
|
// Token: 0x04006525 RID: 25893
|
|
[FieldOffset(Offset = "0x98")]
|
|
[Token(Token = "0x4006525")]
|
|
protected byte[] fragmentBuffer;
|
|
|
|
// Token: 0x04006526 RID: 25894
|
|
[FieldOffset(Offset = "0xA0")]
|
|
[Token(Token = "0x4006526")]
|
|
protected int fragmentBufferDataLength;
|
|
|
|
// Token: 0x04006527 RID: 25895
|
|
[FieldOffset(Offset = "0xA8")]
|
|
[Token(Token = "0x4006527")]
|
|
protected Stream cacheStream;
|
|
|
|
// Token: 0x04006528 RID: 25896
|
|
[FieldOffset(Offset = "0xB0")]
|
|
[Token(Token = "0x4006528")]
|
|
protected int allFragmentSize;
|
|
|
|
// Token: 0x04006529 RID: 25897
|
|
[FieldOffset(Offset = "0xB8")]
|
|
[Token(Token = "0x4006529")]
|
|
private BufferPoolMemoryStream decompressorInputStream;
|
|
|
|
// Token: 0x0400652A RID: 25898
|
|
[FieldOffset(Offset = "0xC0")]
|
|
[Token(Token = "0x400652A")]
|
|
private BufferPoolMemoryStream decompressorOutputStream;
|
|
|
|
// Token: 0x0400652B RID: 25899
|
|
[FieldOffset(Offset = "0xC8")]
|
|
[Token(Token = "0x400652B")]
|
|
private GZipStream decompressorGZipStream;
|
|
|
|
// Token: 0x0400652C RID: 25900
|
|
[Token(Token = "0x400652C")]
|
|
private const int MinLengthToDecompress = 256;
|
|
|
|
// Token: 0x0400652D RID: 25901
|
|
[FieldOffset(Offset = "0xD0")]
|
|
[Token(Token = "0x400652D")]
|
|
private AutoResetEvent fragmentWaitEvent;
|
|
}
|
|
}
|