using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Threading; using Cpp2IlInjected; namespace BestHTTP.PlatformSupport.TcpClient.General { // Token: 0x02001F74 RID: 8052 [Token(Token = "0x2001F74")] public class TcpClient : IDisposable { // Token: 0x0600CBB7 RID: 52151 RVA: 0x002EADE0 File Offset: 0x002E8FE0 [Token(Token = "0x600CBB7")] [Address(RVA = "0x26558B0", Offset = "0x26546B0", VA = "0x1826558B0")] private void Init(AddressFamily family) { Socket socket = this.client; this.active = false; if (socket != 0) { socket.Close(); this.client = (ulong)0L; } Socket socket2; this.client = socket2; } // Token: 0x0600CBB8 RID: 52152 RVA: 0x002EAE18 File Offset: 0x002E9018 [Token(Token = "0x600CBB8")] [Address(RVA = "0x2655CE0", Offset = "0x2654AE0", VA = "0x182655CE0")] public TcpClient() { this.Init(AddressFamily.InterNetwork); TimeSpan timeSpan; this.ConnectTimeout = timeSpan; } // Token: 0x0600CBB9 RID: 52153 RVA: 0x002EAE3C File Offset: 0x002E903C [Token(Token = "0x600CBB9")] [Address(RVA = "0x2655C20", Offset = "0x2654A20", VA = "0x182655C20")] public TcpClient(AddressFamily family) { /* An exception occurred when decompiling this method (0600CBB9) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.PlatformSupport.TcpClient.General.TcpClient::.ctor(System.Net.Sockets.AddressFamily) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_19: stloc:ArgumentException(var_2_28, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("Family must be InterNetwork or InterNetworkV6"), ldstr:string("family"))) } 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: 0x0600CBBA RID: 52154 RVA: 0x002EAE74 File Offset: 0x002E9074 [Token(Token = "0x600CBBA")] [Address(RVA = "0x2655D60", Offset = "0x2654B60", VA = "0x182655D60")] public TcpClient(IPEndPoint localEP) { string text = localEP.ToString(); TimeSpan timeSpan; this.ConnectTimeout = timeSpan; } // Token: 0x0600CBBB RID: 52155 RVA: 0x002EAE9C File Offset: 0x002E909C [Token(Token = "0x600CBBB")] [Address(RVA = "0x2655E00", Offset = "0x2654C00", VA = "0x182655E00")] public TcpClient(string hostname, int port) { TimeSpan timeSpan; this.ConnectTimeout = timeSpan; this.Connect(hostname, port); } // Token: 0x1700205B RID: 8283 // (get) Token: 0x0600CBBC RID: 52156 RVA: 0x002EAEC0 File Offset: 0x002E90C0 // (set) Token: 0x0600CBBD RID: 52157 RVA: 0x002EAED4 File Offset: 0x002E90D4 [Token(Token = "0x1700205B")] protected bool Active { [Token(Token = "0x600CBBC")] [Address(RVA = "0x42C2C0", Offset = "0x42B0C0", VA = "0x18042C2C0")] get { return this.active; } [Token(Token = "0x600CBBD")] [Address(RVA = "0x43DE90", Offset = "0x43CC90", VA = "0x18043DE90")] set { this.active = value; } } // Token: 0x1700205C RID: 8284 // (get) Token: 0x0600CBBE RID: 52158 RVA: 0x002EAEE8 File Offset: 0x002E90E8 // (set) Token: 0x0600CBBF RID: 52159 RVA: 0x002EAEFC File Offset: 0x002E90FC [Token(Token = "0x1700205C")] public Socket Client { [Token(Token = "0x600CBBE")] [Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400")] get { return this.client; } [Token(Token = "0x600CBBF")] [Address(RVA = "0x2655BA0", Offset = "0x26549A0", VA = "0x182655BA0")] set { this.client = value; this.stream = (ulong)0L; } } // Token: 0x1700205D RID: 8285 // (get) Token: 0x0600CBC0 RID: 52160 RVA: 0x002EAF1C File Offset: 0x002E911C [Token(Token = "0x1700205D")] public int Available { [Token(Token = "0x600CBC0")] [Address(RVA = "0x2655E90", Offset = "0x2654C90", VA = "0x182655E90")] get { return this.client.Available; } } // Token: 0x1700205E RID: 8286 // (get) Token: 0x0600CBC1 RID: 52161 RVA: 0x002EAF3C File Offset: 0x002E913C [Token(Token = "0x1700205E")] public bool Connected { [Token(Token = "0x600CBC1")] [Address(RVA = "0x2655EB0", Offset = "0x2654CB0", VA = "0x182655EB0")] get { return this.client.is_connected; } } // Token: 0x0600CBC2 RID: 52162 RVA: 0x002EAF5C File Offset: 0x002E915C [Token(Token = "0x600CBC2")] [Address(RVA = "0x2655940", Offset = "0x2654740", VA = "0x182655940")] public bool IsConnected() { Socket socket = this.client; int num = 0; if (socket.Poll(1, (SelectMode)num)) { int available = this.client.Available; } throw new NullReferenceException(); } // Token: 0x1700205F RID: 8287 // (get) Token: 0x0600CBC3 RID: 52163 RVA: 0x002EAF98 File Offset: 0x002E9198 // (set) Token: 0x0600CBC4 RID: 52164 RVA: 0x002EAFB8 File Offset: 0x002E91B8 [Token(Token = "0x1700205F")] public bool ExclusiveAddressUse { [Token(Token = "0x600CBC3")] [Address(RVA = "0x2655ED0", Offset = "0x2654CD0", VA = "0x182655ED0")] get { return this.client.ExclusiveAddressUse; } [Token(Token = "0x600CBC4")] [Address(RVA = "0x2656270", Offset = "0x2655070", VA = "0x182656270")] set { this.client.ExclusiveAddressUse = value; } } // Token: 0x0600CBC5 RID: 52165 RVA: 0x002EAFD8 File Offset: 0x002E91D8 [Token(Token = "0x600CBC5")] [Address(RVA = "0x2655BA0", Offset = "0x26549A0", VA = "0x182655BA0")] internal void SetTcpClient(Socket s) { this.client = s; this.stream = (ulong)0L; } // Token: 0x17002060 RID: 8288 // (get) Token: 0x0600CBC6 RID: 52166 RVA: 0x002EAFF8 File Offset: 0x002E91F8 // (set) Token: 0x0600CBC7 RID: 52167 RVA: 0x002EB038 File Offset: 0x002E9238 [Token(Token = "0x17002060")] public LingerOption LingerState { [Token(Token = "0x600CBC6")] [Address(RVA = "0x2655EF0", Offset = "0x2654CF0", VA = "0x182655EF0")] get { while (this.values == (TcpClient.Properties)1) { object socketOption = this.client.GetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)128)); if (socketOption == 0) { } if (socketOption != 0) { break; } } return this.linger_state; } [Token(Token = "0x600CBC7")] [Address(RVA = "0x2656290", Offset = "0x2655090", VA = "0x182656290")] set { Socket socket = this.client; if (socket.is_connected) { socket.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)128), value); return; } this.linger_state = value; } } // Token: 0x17002061 RID: 8289 // (get) Token: 0x0600CBC8 RID: 52168 RVA: 0x002EB078 File Offset: 0x002E9278 // (set) Token: 0x0600CBC9 RID: 52169 RVA: 0x002EB0A4 File Offset: 0x002E92A4 [Token(Token = "0x17002061")] public bool NoDelay { [Token(Token = "0x600CBC8")] [Address(RVA = "0x2655FA0", Offset = "0x2654DA0", VA = "0x182655FA0")] get { if (this.values == (TcpClient.Properties)2) { object socketOption = this.client.GetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.Debug); } return this.no_delay; } [Token(Token = "0x600CBC9")] [Address(RVA = "0x26562E0", Offset = "0x26550E0", VA = "0x1826562E0")] set { if (this.client.is_connected) { return; } this.no_delay = value; } } // Token: 0x17002062 RID: 8290 // (get) Token: 0x0600CBCA RID: 52170 RVA: 0x002EB0D0 File Offset: 0x002E92D0 // (set) Token: 0x0600CBCB RID: 52171 RVA: 0x002EB108 File Offset: 0x002E9308 [Token(Token = "0x17002062")] public int ReceiveBufferSize { [Token(Token = "0x600CBCA")] [Address(RVA = "0x2656030", Offset = "0x2654E30", VA = "0x182656030")] get { if (this.values == (TcpClient.Properties)4) { object socketOption = this.client.GetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4098)); } return this.recv_buffer_size; } [Token(Token = "0x600CBCB")] [Address(RVA = "0x2656330", Offset = "0x2655130", VA = "0x182656330")] set { Socket socket = this.client; if (socket.is_connected) { socket.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4098), value); return; } this.recv_buffer_size = value; } } // Token: 0x17002063 RID: 8291 // (get) Token: 0x0600CBCC RID: 52172 RVA: 0x002EB148 File Offset: 0x002E9348 // (set) Token: 0x0600CBCD RID: 52173 RVA: 0x002EB180 File Offset: 0x002E9380 [Token(Token = "0x17002063")] public int ReceiveTimeout { [Token(Token = "0x600CBCC")] [Address(RVA = "0x26560C0", Offset = "0x2654EC0", VA = "0x1826560C0")] get { if (this.values == (TcpClient.Properties)8) { object socketOption = this.client.GetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4102)); } return this.recv_timeout; } [Token(Token = "0x600CBCD")] [Address(RVA = "0x2656380", Offset = "0x2655180", VA = "0x182656380")] set { Socket socket = this.client; if (socket.is_connected) { socket.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4102), value); return; } this.recv_timeout = value; } } // Token: 0x17002064 RID: 8292 // (get) Token: 0x0600CBCE RID: 52174 RVA: 0x002EB1C0 File Offset: 0x002E93C0 // (set) Token: 0x0600CBCF RID: 52175 RVA: 0x002EB1F8 File Offset: 0x002E93F8 [Token(Token = "0x17002064")] public int SendBufferSize { [Token(Token = "0x600CBCE")] [Address(RVA = "0x2656150", Offset = "0x2654F50", VA = "0x182656150")] get { if (this.values == (TcpClient.Properties)16) { object socketOption = this.client.GetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4097)); } return this.send_buffer_size; } [Token(Token = "0x600CBCF")] [Address(RVA = "0x26563D0", Offset = "0x26551D0", VA = "0x1826563D0")] set { Socket socket = this.client; if (socket.is_connected) { socket.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4097), value); return; } this.send_buffer_size = value; } } // Token: 0x17002065 RID: 8293 // (get) Token: 0x0600CBD0 RID: 52176 RVA: 0x002EB238 File Offset: 0x002E9438 // (set) Token: 0x0600CBD1 RID: 52177 RVA: 0x002EB270 File Offset: 0x002E9470 [Token(Token = "0x17002065")] public int SendTimeout { [Token(Token = "0x600CBD0")] [Address(RVA = "0x26561E0", Offset = "0x2654FE0", VA = "0x1826561E0")] get { if (this.values == (TcpClient.Properties)32) { object socketOption = this.client.GetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4101)); } return this.send_timeout; } [Token(Token = "0x600CBD1")] [Address(RVA = "0x2656420", Offset = "0x2655220", VA = "0x182656420")] set { Socket socket = this.client; if (socket.is_connected) { socket.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4101), value); return; } this.send_timeout = value; } } // Token: 0x17002066 RID: 8294 // (get) Token: 0x0600CBD2 RID: 52178 RVA: 0x002EB2B0 File Offset: 0x002E94B0 // (set) Token: 0x0600CBD3 RID: 52179 RVA: 0x002EB2C4 File Offset: 0x002E94C4 [Token(Token = "0x17002066")] public TimeSpan ConnectTimeout { [Token(Token = "0x600CBD2")] [Address(RVA = "0x415290", Offset = "0x414090", VA = "0x180415290")] get; [Token(Token = "0x600CBD3")] [Address(RVA = "0x46AB00", Offset = "0x469900", VA = "0x18046AB00")] set; } // Token: 0x0600CBD4 RID: 52180 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600CBD4")] [Address(RVA = "0x2654E00", Offset = "0x2653C00", VA = "0x182654E00")] public void Close() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600CBD5 RID: 52181 RVA: 0x002EB2D8 File Offset: 0x002E94D8 [Token(Token = "0x600CBD5")] [Address(RVA = "0x2654E40", Offset = "0x2653C40", VA = "0x182654E40")] public void Connect(IPEndPoint remoteEP) { int num; do { num = 0; TimeSpan timeSpan = this.k__BackingField; TimeSpan zero = TimeSpan.Zero; if (!(timeSpan > zero)) { this.client.Connect(remoteEP); this.active = true; } int num2; ManualResetEvent manualResetEvent = new ManualResetEvent(num2 != 0); num2 = 0; ManualResetEvent mre = manualResetEvent; Socket socket = this.client; AsyncCallback asyncCallback = delegate(IAsyncResult res) { bool flag2 = mre.Set(); }; int num3 = 0; IAsyncResult asyncResult = socket.BeginConnect(remoteEP, asyncCallback, num3); ManualResetEvent mre2 = mre; TimeSpan timeSpan2 = this.k__BackingField; bool flag = mre2.WaitOne(timeSpan2); this.active = flag; if (!flag) { goto IL_B6; } this.client.EndConnect(asyncResult); this.CheckDisposed(); } while (num != 0); return; IL_B6: throw new NullReferenceException(); } // Token: 0x0600CBD6 RID: 52182 RVA: 0x002EB3C4 File Offset: 0x002E95C4 [Token(Token = "0x600CBD6")] [Address(RVA = "0x2655080", Offset = "0x2653E80", VA = "0x182655080")] public void Connect(IPAddress address, int port) { IPEndPoint ipendPoint = new IPEndPoint(address, port); this.Connect(ipendPoint); } // Token: 0x0600CBD7 RID: 52183 RVA: 0x002EB3E0 File Offset: 0x002E95E0 [Token(Token = "0x600CBD7")] [Address(RVA = "0x26559E0", Offset = "0x26547E0", VA = "0x1826559E0")] private void SetOptions() { TcpClient.Properties properties = this.values; int num = 0; this.values = (TcpClient.Properties)num; if (properties != (TcpClient.Properties)1) { Socket socket = this.client; if ((socket.is_connected ? 1 : 0) != num) { LingerOption lingerOption = this.linger_state; socket.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)128), lingerOption); } this.values = (TcpClient.Properties)((ulong)1L); } if (properties != (TcpClient.Properties)2 && (this.client.is_connected ? 1 : 0) != num) { bool flag = (this.no_delay ? 1 : 0) != num; } if (properties != (TcpClient.Properties)4) { Socket socket2 = this.client; if ((socket2.is_connected ? 1 : 0) != num) { int num2 = this.recv_buffer_size; socket2.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4098), num2); } } if (properties != (TcpClient.Properties)8) { Socket socket3 = this.client; if ((socket3.is_connected ? 1 : 0) != num) { int num3 = this.recv_timeout; socket3.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4102), num3); } } if (properties != (TcpClient.Properties)16) { Socket socket4 = this.client; if ((socket4.is_connected ? 1 : 0) != num) { int num4 = this.send_buffer_size; socket4.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4097), num4); } } if (properties != (TcpClient.Properties)32) { Socket socket5 = this.client; int num5 = this.send_timeout; if ((socket5.is_connected ? 1 : 0) == num) { return; } socket5.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4101), num5); } } // Token: 0x0600CBD8 RID: 52184 RVA: 0x002EB530 File Offset: 0x002E9730 [Token(Token = "0x600CBD8")] [Address(RVA = "0x2655100", Offset = "0x2653F00", VA = "0x182655100")] public void Connect(string hostname, int port) { /* An exception occurred when decompiling this method (0600CBD8) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.PlatformSupport.TcpClient.General.TcpClient::Connect(System.String,System.Int32) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_A5: stloc:TimeoutException(var_14_AF, newobj:TimeoutException(TimeoutException::.ctor, ldstr:string("DNS resolve timed out!"))) } 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: 0x0600CBD9 RID: 52185 RVA: 0x002EB5F0 File Offset: 0x002E97F0 [Token(Token = "0x600CBD9")] [Address(RVA = "0x26553A0", Offset = "0x26541A0", VA = "0x1826553A0")] public void Connect(IPAddress[] ipAddresses, int port) { /* An exception occurred when decompiling this method (0600CBD9) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.PlatformSupport.TcpClient.General.TcpClient::Connect(System.Net.IPAddress[],System.Int32) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_D8: stloc:ArgumentNullException(var_15_E2, newobj:ArgumentNullException(ArgumentNullException::.ctor, ldstr:string("ipAddresses"))) } 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: 0x0600CBDA RID: 52186 RVA: 0x002EB6E0 File Offset: 0x002E98E0 [Token(Token = "0x600CBDA")] [Address(RVA = "0x2655740", Offset = "0x2654540", VA = "0x182655740")] public void EndConnect(IAsyncResult asyncResult) { this.client.EndConnect(asyncResult); } // Token: 0x0600CBDB RID: 52187 RVA: 0x002EB700 File Offset: 0x002E9900 [Token(Token = "0x600CBDB")] [Address(RVA = "0x2654D10", Offset = "0x2653B10", VA = "0x182654D10")] public IAsyncResult BeginConnect(IPAddress address, int port, AsyncCallback requestCallback, object state) { Socket socket = this.client; IAsyncResult asyncResult; return asyncResult; } // Token: 0x0600CBDC RID: 52188 RVA: 0x002EB71C File Offset: 0x002E991C [Token(Token = "0x600CBDC")] [Address(RVA = "0x2654CE0", Offset = "0x2653AE0", VA = "0x182654CE0")] public IAsyncResult BeginConnect(IPAddress[] addresses, int port, AsyncCallback requestCallback, object state) { Socket socket = this.client; IAsyncResult asyncResult; return asyncResult; } // Token: 0x0600CBDD RID: 52189 RVA: 0x002EB738 File Offset: 0x002E9938 [Token(Token = "0x600CBDD")] [Address(RVA = "0x2654D40", Offset = "0x2653B40", VA = "0x182654D40")] public IAsyncResult BeginConnect(string host, int port, AsyncCallback requestCallback, object state) { Socket socket = this.client; IAsyncResult asyncResult; return asyncResult; } // Token: 0x0600CBDE RID: 52190 RVA: 0x002EB754 File Offset: 0x002E9954 [Token(Token = "0x600CBDE")] [Address(RVA = "0x2655BB0", Offset = "0x26549B0", VA = "0x182655BB0", Slot = "4")] void IDisposable.Dispose() { this.System.IDisposable.Dispose(); GC.SuppressFinalize(this); } // Token: 0x0600CBDF RID: 52191 RVA: 0x002EB770 File Offset: 0x002E9970 [Token(Token = "0x600CBDF")] [Address(RVA = "0x26556E0", Offset = "0x26544E0", VA = "0x1826556E0", Slot = "5")] protected virtual void Dispose(bool disposing) { if (!this.disposed) { this.disposed = true; if (disposing) { NetworkStream networkStream = this.stream; this.stream = (ulong)0L; if (networkStream == 0) { Socket socket = this.client; if (socket != 0) { socket.Close(); this.client = (ulong)0L; return; } } else { int writeTimeout = networkStream.WriteTimeout; this.active = false; } } } } // Token: 0x0600CBE0 RID: 52192 RVA: 0x002EB7D0 File Offset: 0x002E99D0 [Token(Token = "0x600CBE0")] [Address(RVA = "0x2655760", Offset = "0x2654560", VA = "0x182655760", Slot = "1")] protected override void Finalize() { int num; do { num = 0; this.System.IDisposable.Dispose(); base..ctor(); } while (num != 0); } // Token: 0x0600CBE1 RID: 52193 RVA: 0x002EB7F0 File Offset: 0x002E99F0 [Token(Token = "0x600CBE1")] [Address(RVA = "0x26557E0", Offset = "0x26545E0", VA = "0x1826557E0")] public Stream GetStream() { /* An exception occurred when decompiling this method (0600CBE1) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.IO.Stream BestHTTP.PlatformSupport.TcpClient.General.TcpClient::GetStream() ---> System.Exception: Basic block has to end with unconditional control flow. { IL_1F: call:void(TcpClient::CheckDisposed, ldloc:TcpClient(this)) brtrue(IL_00, cne:bool(ldloc:int32(var_0_01), ldc.i4:int32(0))) } 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: 0x0600CBE2 RID: 52194 RVA: 0x002EB828 File Offset: 0x002E9A28 [Token(Token = "0x600CBE2")] [Address(RVA = "0x2654D70", Offset = "0x2653B70", VA = "0x182654D70")] private void CheckDisposed() { } // Token: 0x040081F7 RID: 33271 [FieldOffset(Offset = "0x10")] [Token(Token = "0x40081F7")] private NetworkStream stream; // Token: 0x040081F8 RID: 33272 [FieldOffset(Offset = "0x18")] [Token(Token = "0x40081F8")] private bool active; // Token: 0x040081F9 RID: 33273 [FieldOffset(Offset = "0x20")] [Token(Token = "0x40081F9")] private Socket client; // Token: 0x040081FA RID: 33274 [FieldOffset(Offset = "0x28")] [Token(Token = "0x40081FA")] private bool disposed; // Token: 0x040081FB RID: 33275 [FieldOffset(Offset = "0x2C")] [Token(Token = "0x40081FB")] private TcpClient.Properties values; // Token: 0x040081FC RID: 33276 [FieldOffset(Offset = "0x30")] [Token(Token = "0x40081FC")] private int recv_timeout; // Token: 0x040081FD RID: 33277 [FieldOffset(Offset = "0x34")] [Token(Token = "0x40081FD")] private int send_timeout; // Token: 0x040081FE RID: 33278 [FieldOffset(Offset = "0x38")] [Token(Token = "0x40081FE")] private int recv_buffer_size; // Token: 0x040081FF RID: 33279 [FieldOffset(Offset = "0x3C")] [Token(Token = "0x40081FF")] private int send_buffer_size; // Token: 0x04008200 RID: 33280 [FieldOffset(Offset = "0x40")] [Token(Token = "0x4008200")] private LingerOption linger_state; // Token: 0x04008201 RID: 33281 [FieldOffset(Offset = "0x48")] [Token(Token = "0x4008201")] private bool no_delay; // Token: 0x02001F75 RID: 8053 [Token(Token = "0x2001F75")] private enum Properties : uint { // Token: 0x04008204 RID: 33284 [Token(Token = "0x4008204")] LingerState = 1U, // Token: 0x04008205 RID: 33285 [Token(Token = "0x4008205")] NoDelay, // Token: 0x04008206 RID: 33286 [Token(Token = "0x4008206")] ReceiveBufferSize = 4U, // Token: 0x04008207 RID: 33287 [Token(Token = "0x4008207")] ReceiveTimeout = 8U, // Token: 0x04008208 RID: 33288 [Token(Token = "0x4008208")] SendBufferSize = 16U, // Token: 0x04008209 RID: 33289 [Token(Token = "0x4008209")] SendTimeout = 32U } } }