using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Threading; using BestHTTP.Authentication; using BestHTTP.Caching; using BestHTTP.Cookies; using BestHTTP.Extensions; using BestHTTP.Logger; using BestHTTP.PlatformSupport.TcpClient.General; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using Cpp2IlInjected; using Org.BouncyCastle.Crypto.Tls; namespace BestHTTP { // Token: 0x02001970 RID: 6512 [Token(Token = "0x2001970")] internal sealed class HTTPConnection : ConnectionBase { // Token: 0x170017DE RID: 6110 // (get) Token: 0x060096EC RID: 38636 RVA: 0x001EB284 File Offset: 0x001E9484 [Token(Token = "0x170017DE")] public override bool IsRemovable { [Token(Token = "0x60096EC")] [Address(RVA = "0x2A73B10", Offset = "0x2A72B10", VA = "0x182A73B10", Slot = "5")] get { if (!base.IsRemovable) { if (base.IsFree && this.KeepAlive != (ulong)0L) { DateTime utcNow = DateTime.UtcNow; DateTime lastProcessTime = this.LastProcessTime; TimeSpan timeSpan = utcNow - lastProcessTime; TimeSpan k__BackingField = this.KeepAlive.k__BackingField; if (!(timeSpan >= k__BackingField)) { } } } return true; } } // Token: 0x060096ED RID: 38637 RVA: 0x001EB2E8 File Offset: 0x001E94E8 [Token(Token = "0x60096ED")] [Address(RVA = "0x2A70930", Offset = "0x2A6F930", VA = "0x182A70930")] internal HTTPConnection(string serverAddress) : base(serverAddress) { } // Token: 0x060096EE RID: 38638 RVA: 0x001EB2FC File Offset: 0x001E94FC [Token(Token = "0x60096EE")] [Address(RVA = "0x2A722B0", Offset = "0x2A712B0", VA = "0x182A722B0", Slot = "7")] protected override void ThreadFunc(object param) { uint num11; for (;;) { int num = 0; if (!this.TryLoadAllFromCache()) { TcpClient client = this.Client; if (client != 0 && !client.IsConnected()) { this.Close(); } if (num == 1) { this.Close(); Thread.Sleep(100); } HTTPRequest k__BackingField = this.k__BackingField; if (k__BackingField.k__BackingField) { } Uri k__BackingField = k__BackingField.k__BackingField; this.k__BackingField = k__BackingField; this.Connect(); uint num2; num2 += (uint)1; if (num != 0) { goto IL_721; } if (num2 != (uint)(-1)) { } HTTPRequest k__BackingField2 = this.k__BackingField; if (!k__BackingField2.disableCache) { HTTPCacheService.SetHeaders(k__BackingField2); } TcpClient client2 = this.Client; bool k__BackingField = this.k__BackingField.k__BackingField; client2.NoDelay = k__BackingField; HTTPRequest k__BackingField3 = this.k__BackingField; Stream stream = this.Stream; k__BackingField3.SendOutTo(stream); num2 += (uint)1; if (num != 0) { goto IL_727; } if (num2 != (uint)(-1)) { } bool flag = this.Receive(); num2 += (uint)1; if (num != 0) { goto IL_727; } if (num2 != (uint)(-1)) { } HTTPConnectionStates k__BackingField = this.k__BackingField; if (k__BackingField == HTTPConnectionStates.TimedOut || k__BackingField == HTTPConnectionStates.AbortRequested) { goto IL_88D; } if (flag || this.k__BackingField.k__BackingField == flag) { } HTTPRequest k__BackingField4 = this.k__BackingField; if (k__BackingField4.k__BackingField != (ulong)0L) { int num3; if (k__BackingField4.k__BackingField) { CookieJar.Set(this.k__BackingField.k__BackingField); CookieJar.Persist(); num2 += (uint)1; num3 = 0; if (num != 0) { goto IL_733; } if (num2 != (uint)(-1)) { } } HTTPRequest k__BackingField5 = this.k__BackingField; int k__BackingField = k__BackingField5.k__BackingField.k__BackingField; if (k__BackingField <= 308) { goto IL_319; } if (k__BackingField == 401) { string text = DigestStore.FindBest(k__BackingField5.k__BackingField.GetHeaderValues("www-authenticate")); if (!string.IsNullOrEmpty(text)) { HTTPRequest k__BackingField6 = this.k__BackingField; if (k__BackingField6.k__BackingField) { } Digest orCreate = DigestStore.GetOrCreate(k__BackingField6.k__BackingField); orCreate.ParseChallange(text); HTTPRequest k__BackingField7 = this.k__BackingField; if (k__BackingField7.k__BackingField != (ulong)0L) { if (k__BackingField7.k__BackingField) { } Uri k__BackingField2 = k__BackingField7.k__BackingField; if (!orCreate.IsUriProtected(k__BackingField2) || !this.k__BackingField.HasHeader("Authorization") || orCreate.k__BackingField) { } } } HTTPRequest k__BackingField8 = this.k__BackingField; if (k__BackingField8.useStreaming || k__BackingField8.disableCache || k__BackingField8.k__BackingField == (ulong)0L || !HTTPCacheService.IsSupported) { goto IL_4C9; } if (!this.k__BackingField.k__BackingField) { goto IL_45E; } } while ("Authorization" != (ulong)407L) { } List list; string text2 = DigestStore.FindBest(list); if (string.IsNullOrEmpty(text2)) { continue; } Digest orCreate2 = DigestStore.GetOrCreate(this.k__BackingField.k__BackingField.
k__BackingField); orCreate2.ParseChallange(text2); Proxy k__BackingField = this.k__BackingField.k__BackingField; while (k__BackingField.k__BackingField == (ulong)0L) { } Uri
k__BackingField = k__BackingField.
k__BackingField; if (!orCreate2.IsUriProtected(
k__BackingField)) { continue; } HTTPRequest k__BackingField9 = this.k__BackingField; bool flag2 = k__BackingField9.HasHeader("Proxy-Authorization"); if (flag2) { while (!orCreate2.k__BackingField) { } goto IL_319; } goto IL_319; IL_4C9: HTTPResponse k__BackingField = this.k__BackingField.k__BackingField; if (k__BackingField != 0 && k__BackingField.k__BackingField) { goto IL_51C; } if (k__BackingField == 0) { } uint num4; if (num4 != (uint)0) { goto IL_522; } List list2; if (num4 != (uint)0 && list2 != 0) { KeepAliveHeader keepAliveHeader; if (this.KeepAlive == 0) { keepAliveHeader = new KeepAliveHeader(); this.KeepAlive = keepAliveHeader; } keepAliveHeader.Parse(list2); goto IL_51C; } goto IL_51C; IL_45E: HTTPRequest k__BackingField10; Uri k__BackingField3 = k__BackingField10.k__BackingField; HTTPMethods k__BackingField = k__BackingField10.k__BackingField; HTTPResponse k__BackingField2 = k__BackingField10.k__BackingField; if (HTTPCacheService.IsCacheble(k__BackingField3, k__BackingField, k__BackingField2)) { HTTPRequest k__BackingField11 = this.k__BackingField; if (k__BackingField11.k__BackingField) { } Uri k__BackingField4 = k__BackingField11.k__BackingField; HTTPMethods k__BackingField2 = k__BackingField11.k__BackingField; HTTPResponse k__BackingField3 = k__BackingField11.k__BackingField; HTTPCacheFileInfo httpcacheFileInfo = HTTPCacheService.Store(k__BackingField4, k__BackingField2, k__BackingField3); HTTPCacheService.SaveLibrary(); goto IL_4C9; } goto IL_4C9; IL_319: if (flag2 > true) { while (flag2 > true) { } } int i = k__BackingField9.k__BackingField; while (i >= k__BackingField9.k__BackingField) { } i++; k__BackingField9.k__BackingField = i; string firstHeaderValue = this.k__BackingField.k__BackingField.GetFirstHeaderValue("location"); if (!string.IsNullOrEmpty(firstHeaderValue)) { Uri redirectUri = this.GetRedirectUri(firstHeaderValue); if (HTTPManager.Logger == 0) { ILogger logger = HTTPManager.Logger; HTTPRequest k__BackingField12 = this.k__BackingField; if (k__BackingField12.k__BackingField) { } int hashCode = k__BackingField12.k__BackingField.GetHashCode(); string text3 = string.Format("{0} - Redirected to Location: '{1}' redirectUri: '{1}'", hashCode, firstHeaderValue, redirectUri); } HTTPRequest k__BackingField13 = this.k__BackingField; OnBeforeRedirectionDelegate onBeforeRedirection = k__BackingField13.onBeforeRedirection; if (onBeforeRedirection != 0) { HTTPResponse k__BackingField4 = k__BackingField13.k__BackingField; if (!onBeforeRedirection(k__BackingField13, k__BackingField4, redirectUri)) { ILogger logger2 = HTTPManager.Logger; } } Dictionary> k__BackingField = this.k__BackingField.k__BackingField; if (k__BackingField != 0) { bool flag3 = k__BackingField.Remove("Host"); } HTTPRequest k__BackingField14 = this.k__BackingField; if (k__BackingField14.k__BackingField) { } int hashCode2 = k__BackingField14.k__BackingField.GetHashCode(); this.k__BackingField.k__BackingField = redirectUri; this.k__BackingField.k__BackingField = num3; k__BackingField10 = this.k__BackingField; k__BackingField10.k__BackingField = true; goto IL_45E; } goto IL_79F; } IL_51C: uint num5; while (num5 != (uint)0) { } IL_522: this.Close(); this.Close(); HTTPConnectionStates k__BackingField2 = this.k__BackingField; if (k__BackingField2 == HTTPConnectionStates.TimedOut || k__BackingField2 == HTTPConnectionStates.AbortRequested || this.k__BackingField.k__BackingField) { goto IL_8AB; } } HTTPRequest k__BackingField15 = this.k__BackingField; int num6 = 0; k__BackingField15.k__BackingField = num6; this.k__BackingField.k__BackingField = k__BackingField15; this.k__BackingField.k__BackingField = (HTTPRequestStates)((ulong)6L); this.Close(); HTTPRequest k__BackingField16 = this.k__BackingField; if (k__BackingField16 == 0) { goto IL_609; } Uri k__BackingField5; if (k__BackingField16.useStreaming) { if (k__BackingField16.k__BackingField) { } k__BackingField5 = k__BackingField16.k__BackingField; ulong num7; bool flag4 = HTTPCacheService.DeleteEntity(k__BackingField5, num7 != 0UL); } HTTPRequest k__BackingField17 = this.k__BackingField; int num8 = 0; k__BackingField17.k__BackingField = num8; HTTPConnectionStates k__BackingField3 = this.k__BackingField; if (k__BackingField5 != 0) { if (k__BackingField5 == 0) { goto IL_612; } if (k__BackingField5 != (ulong)1L) { this.k__BackingField.k__BackingField = k__BackingField3; this.k__BackingField.k__BackingField = (HTTPRequestStates)((ulong)4L); goto IL_609; } } IL_620: uint num9; this.k__BackingField.k__BackingField = (HTTPRequestStates)num9; object locker = HTTPManager.Locker; int num10; Monitor.Enter(locker, num10); HTTPRequest k__BackingField18 = this.k__BackingField; HTTPResponse k__BackingField5; if (k__BackingField18 != 0) { k__BackingField5 = k__BackingField18.k__BackingField; if (k__BackingField5 != 0 && k__BackingField5.k__BackingField) { this.k__BackingField = (HTTPConnectionStates)((ulong)3L); } } k__BackingField18.k__BackingField = (HTTPMethods)num11; byte[] k__BackingField = k__BackingField18.k__BackingField; Exception ex; if ("{il2cpp array field local192->}" == (ulong)2L && k__BackingField5 == (ulong)4294967291L && "{il2cpp array field local192->}" == (ulong)0L) { HTTPRequestStates httprequestStates; int hashCode3 = httprequestStates.GetHashCode(); HTTPRequestStates httprequestStates2 = httprequestStates; ex = new Exception(string.Format("Remote server closed the connection before sending response header! Previous request state: {0}. Connection state: {1}", hashCode3, httprequestStates2)); k__BackingField[12] = ex; this.k__BackingField.k__BackingField = (HTTPRequestStates)((ulong)4L); } if (this.k__BackingField.k__BackingField == HTTPRequestStates.ConnectionTimedOut) { this.k__BackingField = (HTTPConnectionStates)num11; } DateTime utcNow = DateTime.UtcNow; this.LastProcessTime = utcNow; base.RecycleNow(); Monitor.Exit(locker); if (ex == 0 && num11 == (uint)0) { break; } continue; IL_612: this.k__BackingField.k__BackingField = (HTTPRequestStates)((ulong)7L); goto IL_620; IL_609: num10 = 0; this.Close(); goto IL_612; } return; IL_721: throw new NullReferenceException(); IL_727: throw new NullReferenceException(); IL_733: throw new NullReferenceException(); IL_79F: PropertyDescriptor propertyDescriptor = num11.PropertyDescriptor; throw new NullReferenceException(); IL_88D: Exception ex2 = new Exception("AbortRequested"); throw new NullReferenceException(); IL_8AB: Exception ex3 = new Exception("AbortRequested"); throw new NullReferenceException(); } // Token: 0x060096EF RID: 38639 RVA: 0x001EBC10 File Offset: 0x001E9E10 [Token(Token = "0x60096EF")] [Address(RVA = "0x2A70AD0", Offset = "0x2A6FAD0", VA = "0x182A70AD0")] private void Connect() { int num; TcpClient client5; TlsClientProtocol tlsClientProtocol; List list; Uri k__BackingField2; for (;;) { HTTPRequest k__BackingField = this.k__BackingField; num = 0; if (k__BackingField.k__BackingField != 0) { } if ((k__BackingField.k__BackingField ? 1 : 0) != num) { } Uri k__BackingField = k__BackingField.k__BackingField; TcpClient tcpClient; if (this.Client == 0) { tcpClient = new TcpClient(); this.Client = tcpClient; } if (tcpClient.Connected) { if (HTTPManager.Logger > (ulong)1L) { goto IL_239; } ILogger logger = HTTPManager.Logger; string host = k__BackingField.Host; int port = k__BackingField.Port; } HTTPRequest k__BackingField2 = this.k__BackingField; TcpClient client = this.Client; TimeSpan k__BackingField = k__BackingField2.k__BackingField; client.k__BackingField = k__BackingField; if (HTTPManager.Logger == 0) { ILogger logger2 = HTTPManager.Logger; HTTPRequest k__BackingField3 = this.k__BackingField; if ((k__BackingField3.k__BackingField ? 1 : 0) == num) { continue; } int hashCode = k__BackingField3.k__BackingField.m_String.GetHashCode(); string host2 = k__BackingField.Host; int port2 = k__BackingField.Port; string text2; string text = string.Format("'{0}' - Connecting to {1}:{2}", hashCode, host2, text2); } TcpClient client2 = this.Client; int sendBufferSize = HTTPManager.SendBufferSize; client2.SendBufferSize = sendBufferSize; TcpClient client3 = this.Client; int receiveBufferSize = HTTPManager.ReceiveBufferSize; client3.ReceiveBufferSize = receiveBufferSize; if (HTTPManager.Logger == 0) { ILogger logger3 = HTTPManager.Logger; object[] array = new object[4]; HTTPRequest k__BackingField4 = this.k__BackingField; if ((k__BackingField4.k__BackingField ? 1 : 0) == num) { continue; } int hashCode2 = k__BackingField4.k__BackingField.m_String.GetHashCode(); if (hashCode2 != 0) { } array[0] = hashCode2; int sendBufferSize2 = this.Client.SendBufferSize; string text3; if (text3 != 0) { } array[1] = text3; int receiveBufferSize2 = this.Client.ReceiveBufferSize; string text4; if (text4 != 0) { } array[2] = text4; bool is_blocking = this.Client.client.is_blocking; string text5; if (text5 != 0) { } array[3] = text5; string text6 = string.Format("'{0}' - Buffer sizes - Send: {1} Receive: {2} Blocking: {3}", array); } TcpClient client4 = this.Client; string host3 = k__BackingField.Host; int port3 = k__BackingField.Port; client4.Connect(host3, port3); if (HTTPManager.Logger <= (ulong)1L) { ILogger logger4 = HTTPManager.Logger; string host4 = k__BackingField.Host; int port4 = k__BackingField.Port; string text8; string text7 = "Connected to " + host4 + ":" + text8; } IL_239: DateTime utcNow = DateTime.UtcNow; this.k__BackingField = utcNow; if (this.Stream != num) { return; } HTTPRequest k__BackingField5 = this.k__BackingField; if ((k__BackingField5.k__BackingField ? 1 : 0) != num) { } bool flag = HTTPProtocolFactory.IsSecureProtocol(k__BackingField5.k__BackingField); Stream stream = this.Client.GetStream(); HTTPRequest k__BackingField6 = this.k__BackingField; this.Stream = stream; Proxy k__BackingField = k__BackingField6.k__BackingField; if (k__BackingField != 0) { string text9 = k__BackingField.ToString(); } if (!flag) { return; } HTTPRequest k__BackingField7 = this.k__BackingField; client5 = this.Client; if ((k__BackingField7.k__BackingField ? 1 : 0) == num) { break; } SecureRandom secureRandom = new SecureRandom(); Stream stream2; tlsClientProtocol = new TlsClientProtocol(stream2, secureRandom); HTTPRequest k__BackingField8 = this.k__BackingField; if (k__BackingField8.k__BackingField != 0) { } if ((k__BackingField8.k__BackingField ? 1 : 0) != num) { } if (!k__BackingField8.k__BackingField.IsHostIsAnIPAddress()) { list = new List(1); HTTPRequest k__BackingField9 = this.k__BackingField; if ((k__BackingField9.k__BackingField ? 1 : 0) != num) { } string host5 = k__BackingField9.k__BackingField.Host; list.Add(host5); } HTTPRequest k__BackingField10 = this.k__BackingField; if ((k__BackingField10.k__BackingField ? 1 : 0) != num) { } k__BackingField2 = k__BackingField10.k__BackingField; if (k__BackingField10.k__BackingField == 0) { goto Block_14; } } Stream stream3 = client5.GetStream(); RemoteCertificateValidationCallback remoteCertificateValidationCallback = delegate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors errors) { HTTPRequest k__BackingField12 = this.k__BackingField; Func customCertificationValidator = k__BackingField12.CustomCertificationValidator; return customCertificationValidator == 0 || customCertificationValidator(k__BackingField12, cert, chain) != null; }; int num2; SslStream sslStream = new SslStream(stream3, num2 != 0, remoteCertificateValidationCallback); num2 = 0; if (sslStream == 0) { HTTPRequest k__BackingField11 = this.k__BackingField; if ((k__BackingField11.k__BackingField ? 1 : 0) != num) { } string host6 = k__BackingField11.k__BackingField.Host; bool isAuthenticated = sslStream.IsAuthenticated; } this.Stream = sslStream; return; Block_14: AlwaysValidVerifyer alwaysValidVerifyer = new AlwaysValidVerifyer(); IClientCredentialsProvider k__BackingField = this.k__BackingField.k__BackingField; LegacyTlsClient legacyTlsClient = new LegacyTlsClient(k__BackingField2, alwaysValidVerifyer, k__BackingField, list); tlsClientProtocol.RefuseRenegotiation(); throw new NullReferenceException(); } // Token: 0x060096F0 RID: 38640 RVA: 0x001EC010 File Offset: 0x001EA210 [Token(Token = "0x60096F0")] [Address(RVA = "0x2A71C30", Offset = "0x2A70C30", VA = "0x182A71C30")] private bool Receive() { /* An exception occurred when decompiling this method (060096F0) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Boolean BestHTTP.HTTPConnection::Receive() ---> System.Exception: Basic block has to end with unconditional control flow. { IL_22E: stloc:Exception(var_36_238, newobj:Exception(Exception::.ctor, ldstr:string("Malformed URI in GetProtocolFromUri"))) } 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.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: 0x060096F1 RID: 38641 RVA: 0x001EC258 File Offset: 0x001EA458 [Token(Token = "0x60096F1")] [Address(RVA = "0x2A71730", Offset = "0x2A70730", VA = "0x182A71730")] private bool LoadFromCache(Uri uri) { int num; for (;;) { num = 0; if (HTTPManager.Logger == 0) { ILogger logger = HTTPManager.Logger; HTTPRequest k__BackingField = this.k__BackingField; if ((k__BackingField.k__BackingField ? 1 : 0) != num) { } int hashCode = k__BackingField.k__BackingField.GetHashCode(); int hashCode2 = uri.GetHashCode(); string text = string.Format("{0} - LoadFromCache for Uri: {1}", hashCode, hashCode2); } HTTPCacheFileInfo entity = HTTPCacheService.GetEntity(uri); if (entity == 0) { goto IL_117; } HTTPRequest k__BackingField2 = this.k__BackingField; HTTPResponse httpresponse = entity.ReadResponseTo(k__BackingField2); HTTPRequest k__BackingField3 = this.k__BackingField; if (httpresponse != 0) { return true; } k__BackingField3.k__BackingField.k__BackingField = entity; Stream stream; if (stream != 0) { if (!this.k__BackingField.k__BackingField.HasHeader("content-length")) { break; } this.k__BackingField.k__BackingField.k__BackingField = true; HTTPRequest k__BackingField4 = this.k__BackingField; if (!k__BackingField4.cacheOnly) { HTTPResponse k__BackingField = k__BackingField4.k__BackingField; } } if (stream != 0) { } if (num == 0) { goto Block_6; } } Dictionary> k__BackingField = this.k__BackingField.k__BackingField.k__BackingField; List list = new List(1); string text2; list.Add(text2); throw new NullReferenceException(); Block_6: if (num != -1) { } return true; IL_117: int num2 = 0; ILogger logger2 = HTTPManager.Logger; int hashCode3 = num2.GetHashCode(); int hashCode4 = list.GetHashCode(); string text3 = string.Format("{0} - LoadFromCache for Uri: {1} - Cached entity not found!", hashCode3, hashCode4); throw new NullReferenceException(); } // Token: 0x060096F2 RID: 38642 RVA: 0x001EC3BC File Offset: 0x001EA5BC [Token(Token = "0x60096F2")] [Address(RVA = "0x2A73670", Offset = "0x2A72670", VA = "0x182A73670")] private bool TryLoadAllFromCache() { if (!this.k__BackingField.disableCache && HTTPCacheService.IsSupported) { HTTPRequest k__BackingField = this.k__BackingField; if (HTTPCacheService.IsCachedEntityExpiresInTheFuture(k__BackingField)) { if (HTTPManager.Logger == 0) { ILogger logger = HTTPManager.Logger; HTTPRequest k__BackingField2 = this.k__BackingField; if (k__BackingField2.k__BackingField) { } int hashCode = k__BackingField2.k__BackingField.GetHashCode(); string text = string.Format("{0} - TryLoadAllFromCache - whole response loading from cache", hashCode); } HTTPRequest k__BackingField3 = this.k__BackingField; HTTPResponse fullResponse = HTTPCacheService.GetFullResponse(k__BackingField3); k__BackingField3.k__BackingField = fullResponse; if (this.k__BackingField.k__BackingField != (ulong)0L) { return true; } } if (k__BackingField.k__BackingField) { } bool flag = HTTPCacheService.DeleteEntity(k__BackingField.k__BackingField, true); } throw new NullReferenceException(); } // Token: 0x060096F3 RID: 38643 RVA: 0x001EC4B0 File Offset: 0x001EA6B0 [Token(Token = "0x60096F3")] [Address(RVA = "0x2A73900", Offset = "0x2A72900", VA = "0x182A73900")] private void TryStoreInCache() { HTTPRequest k__BackingField = this.k__BackingField; if (!k__BackingField.useStreaming && !k__BackingField.disableCache && k__BackingField.k__BackingField != (ulong)0L && HTTPCacheService.IsSupported) { HTTPRequest k__BackingField2 = this.k__BackingField; if (k__BackingField2.k__BackingField) { } Uri k__BackingField = k__BackingField2.k__BackingField; HTTPMethods k__BackingField = k__BackingField2.k__BackingField; HTTPResponse k__BackingField = k__BackingField2.k__BackingField; if (HTTPCacheService.IsCacheble(k__BackingField, k__BackingField, k__BackingField)) { HTTPRequest k__BackingField3 = this.k__BackingField; if (k__BackingField3.k__BackingField) { } Uri k__BackingField2 = k__BackingField3.k__BackingField; HTTPMethods k__BackingField2 = k__BackingField3.k__BackingField; HTTPResponse k__BackingField2 = k__BackingField3.k__BackingField; HTTPCacheFileInfo httpcacheFileInfo = HTTPCacheService.Store(k__BackingField2, k__BackingField2, k__BackingField2); HTTPCacheService.SaveLibrary(); } } } // Token: 0x060096F4 RID: 38644 RVA: 0x001EC570 File Offset: 0x001EA770 [Token(Token = "0x60096F4")] [Address(RVA = "0x2A715A0", Offset = "0x2A705A0", VA = "0x182A715A0")] private Uri GetRedirectUri(string location) { int num; int num2; do { Uri uri = new Uri(location); if (uri.IsFile || string.Equals(uri.AbsolutePath, location)) { } num = 0; num2 = 0; } while (!(num == num2)); Uri k__BackingField = this.k__BackingField.k__BackingField; string scheme = k__BackingField.Scheme; string host = k__BackingField.Host; int port = k__BackingField.Port; return new UriBuilder(scheme, host, port, location).Uri; } // Token: 0x060096F5 RID: 38645 RVA: 0x001EC5F4 File Offset: 0x001EA7F4 [Token(Token = "0x60096F5")] [Address(RVA = "0x2A70940", Offset = "0x2A6F940", VA = "0x182A70940", Slot = "6")] internal override void Abort(HTTPConnectionStates newState) { this.k__BackingField = newState; if (newState == HTTPConnectionStates.TimedOut) { DateTime utcNow = DateTime.UtcNow; this.k__BackingField = utcNow; } if (this.Stream != (ulong)0L) { this.Stream.Dispose(); } } // Token: 0x060096F6 RID: 38646 RVA: 0x001EC63C File Offset: 0x001EA83C [Token(Token = "0x60096F6")] [Address(RVA = "0x2A709F0", Offset = "0x2A6F9F0", VA = "0x182A709F0")] private void Close() { int num; do { num = 0; this.KeepAlive = num; this.k__BackingField = num; if (this.Client == num) { break; } this.Client.Close(); this.Stream = (ulong)0L; this.Client = (ulong)0L; } while (num != 0); } // Token: 0x060096F7 RID: 38647 RVA: 0x001EC68C File Offset: 0x001EA88C [Token(Token = "0x60096F7")] [Address(RVA = "0x2A71570", Offset = "0x2A70570", VA = "0x182A71570", Slot = "8")] protected override void Dispose(bool disposing) { this.Close(); base.Dispose(disposing); } // Token: 0x0400663A RID: 26170 [FieldOffset(Offset = "0x58")] [Token(Token = "0x400663A")] private TcpClient Client; // Token: 0x0400663B RID: 26171 [FieldOffset(Offset = "0x60")] [Token(Token = "0x400663B")] private Stream Stream; // Token: 0x0400663C RID: 26172 [FieldOffset(Offset = "0x68")] [Token(Token = "0x400663C")] private KeepAliveHeader KeepAlive; } }