using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Threading; using Cpp2IlInjected; namespace BestHTTP.PlatformSupport.TcpClient.General { // Token: 0x02001997 RID: 6551 [Token(Token = "0x2001997")] [StructLayout(3)] public class TcpClient : IDisposable { // Token: 0x0600AFDD RID: 45021 RVA: 0x00292888 File Offset: 0x00290A88 [Token(Token = "0x600AFDD")] [Address(RVA = "0x268B260", Offset = "0x2689C60", VA = "0x18268B260")] 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: 0x0600AFDE RID: 45022 RVA: 0x002928C0 File Offset: 0x00290AC0 [Token(Token = "0x600AFDE")] [Address(RVA = "0x268B690", Offset = "0x268A090", VA = "0x18268B690")] public TcpClient() { this.Init(AddressFamily.InterNetwork); TimeSpan timeSpan; this.ConnectTimeout = timeSpan; } // Token: 0x0600AFDF RID: 45023 RVA: 0x002928E4 File Offset: 0x00290AE4 [Token(Token = "0x600AFDF")] [Address(RVA = "0x268B5D0", Offset = "0x2689FD0", VA = "0x18268B5D0")] public TcpClient(AddressFamily family) { /* An exception occurred when decompiling this method (0600AFDF) 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: 0x0600AFE0 RID: 45024 RVA: 0x0029291C File Offset: 0x00290B1C [Token(Token = "0x600AFE0")] [Address(RVA = "0x268B710", Offset = "0x268A110", VA = "0x18268B710")] public TcpClient(IPEndPoint localEP) { string text = localEP.ToString(); TimeSpan timeSpan; this.ConnectTimeout = timeSpan; } // Token: 0x0600AFE1 RID: 45025 RVA: 0x00292944 File Offset: 0x00290B44 [Token(Token = "0x600AFE1")] [Address(RVA = "0x268B7B0", Offset = "0x268A1B0", VA = "0x18268B7B0")] public TcpClient(string hostname, int port) { /* An exception occurred when decompiling this method (0600AFE1) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.PlatformSupport.TcpClient.General.TcpClient::.ctor(System.String,System.Int32) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_A3: stloc:TimeoutException(var_13_AD, 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.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: 0x17001C5A RID: 7258 // (get) Token: 0x0600AFE2 RID: 45026 RVA: 0x00292A00 File Offset: 0x00290C00 // (set) Token: 0x0600AFE3 RID: 45027 RVA: 0x00292A14 File Offset: 0x00290C14 [Token(Token = "0x17001C5A")] protected bool Active { [Token(Token = "0x600AFE2")] [Address(RVA = "0x4FBF40", Offset = "0x4FA940", VA = "0x1804FBF40")] get { return this.active; } [Token(Token = "0x600AFE3")] [Address(RVA = "0x55D5F0", Offset = "0x55BFF0", VA = "0x18055D5F0")] set { this.active = value; } } // Token: 0x17001C5B RID: 7259 // (get) Token: 0x0600AFE4 RID: 45028 RVA: 0x00292A28 File Offset: 0x00290C28 // (set) Token: 0x0600AFE5 RID: 45029 RVA: 0x00292A3C File Offset: 0x00290C3C [Token(Token = "0x17001C5B")] public Socket Client { [Token(Token = "0x600AFE4")] [Address(RVA = "0x3C1220", Offset = "0x3BFC20", VA = "0x1803C1220")] get { return this.client; } [Token(Token = "0x600AFE5")] [Address(RVA = "0x268B550", Offset = "0x2689F50", VA = "0x18268B550")] set { this.client = value; this.stream = (ulong)0L; } } // Token: 0x17001C5C RID: 7260 // (get) Token: 0x0600AFE6 RID: 45030 RVA: 0x00292A5C File Offset: 0x00290C5C [Token(Token = "0x17001C5C")] public int Available { [Token(Token = "0x600AFE6")] [Address(RVA = "0x268B9C0", Offset = "0x268A3C0", VA = "0x18268B9C0")] get { return this.client.Available; } } // Token: 0x17001C5D RID: 7261 // (get) Token: 0x0600AFE7 RID: 45031 RVA: 0x00292A7C File Offset: 0x00290C7C [Token(Token = "0x17001C5D")] public bool Connected { [Token(Token = "0x600AFE7")] [Address(RVA = "0x268B9E0", Offset = "0x268A3E0", VA = "0x18268B9E0")] get { return this.client.is_connected; } } // Token: 0x0600AFE8 RID: 45032 RVA: 0x00292A9C File Offset: 0x00290C9C [Token(Token = "0x600AFE8")] [Address(RVA = "0x268B2F0", Offset = "0x2689CF0", VA = "0x18268B2F0")] 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: 0x17001C5E RID: 7262 // (get) Token: 0x0600AFE9 RID: 45033 RVA: 0x00292AD8 File Offset: 0x00290CD8 // (set) Token: 0x0600AFEA RID: 45034 RVA: 0x00292AF8 File Offset: 0x00290CF8 [Token(Token = "0x17001C5E")] public bool ExclusiveAddressUse { [Token(Token = "0x600AFE9")] [Address(RVA = "0x268BA00", Offset = "0x268A400", VA = "0x18268BA00")] get { return this.client.ExclusiveAddressUse; } [Token(Token = "0x600AFEA")] [Address(RVA = "0x268BDA0", Offset = "0x268A7A0", VA = "0x18268BDA0")] set { this.client.ExclusiveAddressUse = value; } } // Token: 0x0600AFEB RID: 45035 RVA: 0x00292B18 File Offset: 0x00290D18 [Token(Token = "0x600AFEB")] [Address(RVA = "0x268B550", Offset = "0x2689F50", VA = "0x18268B550")] internal void SetTcpClient(Socket s) { this.client = s; this.stream = (ulong)0L; } // Token: 0x17001C5F RID: 7263 // (get) Token: 0x0600AFEC RID: 45036 RVA: 0x00292B38 File Offset: 0x00290D38 // (set) Token: 0x0600AFED RID: 45037 RVA: 0x00292B78 File Offset: 0x00290D78 [Token(Token = "0x17001C5F")] public LingerOption LingerState { [Token(Token = "0x600AFEC")] [Address(RVA = "0x268BA20", Offset = "0x268A420", VA = "0x18268BA20")] 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 = "0x600AFED")] [Address(RVA = "0x268BDC0", Offset = "0x268A7C0", VA = "0x18268BDC0")] set { Socket socket = this.client; if (socket.is_connected) { socket.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)128), value); return; } this.linger_state = value; } } // Token: 0x17001C60 RID: 7264 // (get) Token: 0x0600AFEE RID: 45038 RVA: 0x00292BB8 File Offset: 0x00290DB8 // (set) Token: 0x0600AFEF RID: 45039 RVA: 0x00292BE4 File Offset: 0x00290DE4 [Token(Token = "0x17001C60")] public bool NoDelay { [Token(Token = "0x600AFEE")] [Address(RVA = "0x268BAD0", Offset = "0x268A4D0", VA = "0x18268BAD0")] get { if (this.values == (TcpClient.Properties)2) { object socketOption = this.client.GetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.Debug); } return this.no_delay; } [Token(Token = "0x600AFEF")] [Address(RVA = "0x268BE10", Offset = "0x268A810", VA = "0x18268BE10")] set { if (this.client.is_connected) { return; } this.no_delay = value; } } // Token: 0x17001C61 RID: 7265 // (get) Token: 0x0600AFF0 RID: 45040 RVA: 0x00292C10 File Offset: 0x00290E10 // (set) Token: 0x0600AFF1 RID: 45041 RVA: 0x00292C48 File Offset: 0x00290E48 [Token(Token = "0x17001C61")] public int ReceiveBufferSize { [Token(Token = "0x600AFF0")] [Address(RVA = "0x268BB60", Offset = "0x268A560", VA = "0x18268BB60")] 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 = "0x600AFF1")] [Address(RVA = "0x268BE60", Offset = "0x268A860", VA = "0x18268BE60")] 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: 0x17001C62 RID: 7266 // (get) Token: 0x0600AFF2 RID: 45042 RVA: 0x00292C88 File Offset: 0x00290E88 // (set) Token: 0x0600AFF3 RID: 45043 RVA: 0x00292CC0 File Offset: 0x00290EC0 [Token(Token = "0x17001C62")] public int ReceiveTimeout { [Token(Token = "0x600AFF2")] [Address(RVA = "0x268BBF0", Offset = "0x268A5F0", VA = "0x18268BBF0")] get { if (this.values == (TcpClient.Properties)8) { object socketOption = this.client.GetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4102)); } return this.recv_timeout; } [Token(Token = "0x600AFF3")] [Address(RVA = "0x268BEB0", Offset = "0x268A8B0", VA = "0x18268BEB0")] set { Socket socket = this.client; if (socket.is_connected) { socket.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4102), value); return; } this.recv_timeout = value; } } // Token: 0x17001C63 RID: 7267 // (get) Token: 0x0600AFF4 RID: 45044 RVA: 0x00292D00 File Offset: 0x00290F00 // (set) Token: 0x0600AFF5 RID: 45045 RVA: 0x00292D38 File Offset: 0x00290F38 [Token(Token = "0x17001C63")] public int SendBufferSize { [Token(Token = "0x600AFF4")] [Address(RVA = "0x268BC80", Offset = "0x268A680", VA = "0x18268BC80")] 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 = "0x600AFF5")] [Address(RVA = "0x268BF00", Offset = "0x268A900", VA = "0x18268BF00")] 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: 0x17001C64 RID: 7268 // (get) Token: 0x0600AFF6 RID: 45046 RVA: 0x00292D78 File Offset: 0x00290F78 // (set) Token: 0x0600AFF7 RID: 45047 RVA: 0x00292DB0 File Offset: 0x00290FB0 [Token(Token = "0x17001C64")] public int SendTimeout { [Token(Token = "0x600AFF6")] [Address(RVA = "0x268BD10", Offset = "0x268A710", VA = "0x18268BD10")] get { if (this.values == (TcpClient.Properties)32) { object socketOption = this.client.GetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4101)); } return this.send_timeout; } [Token(Token = "0x600AFF7")] [Address(RVA = "0x268BF50", Offset = "0x268A950", VA = "0x18268BF50")] set { Socket socket = this.client; if (socket.is_connected) { socket.SetSocketOption((SocketOptionLevel)((uint)65535), (SocketOptionName)((uint)4101), value); return; } this.send_timeout = value; } } // Token: 0x17001C65 RID: 7269 // (get) Token: 0x0600AFF8 RID: 45048 RVA: 0x00292DF0 File Offset: 0x00290FF0 // (set) Token: 0x0600AFF9 RID: 45049 RVA: 0x00292E04 File Offset: 0x00291004 [Token(Token = "0x17001C65")] public TimeSpan ConnectTimeout { [Token(Token = "0x600AFF8")] [Address(RVA = "0x462740", Offset = "0x461140", VA = "0x180462740")] get; [Token(Token = "0x600AFF9")] [Address(RVA = "0x462750", Offset = "0x461150", VA = "0x180462750")] set; } // Token: 0x0600AFFA RID: 45050 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600AFFA")] [Address(RVA = "0x268A810", Offset = "0x2689210", VA = "0x18268A810")] public void Close() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600AFFB RID: 45051 RVA: 0x00292E18 File Offset: 0x00291018 [Token(Token = "0x600AFFB")] [Address(RVA = "0x268A850", Offset = "0x2689250", VA = "0x18268A850")] 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_BA; } this.client.EndConnect(asyncResult); this.CheckDisposed(); if (num != -1) { } } while (num != 0); return; IL_BA: throw new NullReferenceException(); } // Token: 0x0600AFFC RID: 45052 RVA: 0x00292F08 File Offset: 0x00291108 [Token(Token = "0x600AFFC")] [Address(RVA = "0x268AAD0", Offset = "0x26894D0", VA = "0x18268AAD0")] public void Connect(IPAddress address, int port) { IPEndPoint ipendPoint = new IPEndPoint(address, port); this.Connect(ipendPoint); } // Token: 0x0600AFFD RID: 45053 RVA: 0x00292F24 File Offset: 0x00291124 [Token(Token = "0x600AFFD")] [Address(RVA = "0x268B390", Offset = "0x2689D90", VA = "0x18268B390")] 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: 0x0600AFFE RID: 45054 RVA: 0x00293074 File Offset: 0x00291274 [Token(Token = "0x600AFFE")] [Address(RVA = "0x268AB50", Offset = "0x2689550", VA = "0x18268AB50")] public void Connect(string hostname, int port) { /* An exception occurred when decompiling this method (0600AFFE) 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_92: stloc:TimeoutException(var_12_9C, 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.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: 0x0600AFFF RID: 45055 RVA: 0x00293120 File Offset: 0x00291320 [Token(Token = "0x600AFFF")] [Address(RVA = "0x268AD00", Offset = "0x2689700", VA = "0x18268AD00")] public void Connect(IPAddress[] ipAddresses, int port) { /* An exception occurred when decompiling this method (0600AFFF) 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_14_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: 0x0600B000 RID: 45056 RVA: 0x00293210 File Offset: 0x00291410 [Token(Token = "0x600B000")] [Address(RVA = "0x268B0A0", Offset = "0x2689AA0", VA = "0x18268B0A0")] public void EndConnect(IAsyncResult asyncResult) { this.client.EndConnect(asyncResult); } // Token: 0x0600B001 RID: 45057 RVA: 0x00293230 File Offset: 0x00291430 [Token(Token = "0x600B001")] [Address(RVA = "0x268A720", Offset = "0x2689120", VA = "0x18268A720")] public IAsyncResult BeginConnect(IPAddress address, int port, AsyncCallback requestCallback, object state) { Socket socket = this.client; IAsyncResult asyncResult; return asyncResult; } // Token: 0x0600B002 RID: 45058 RVA: 0x0029324C File Offset: 0x0029144C [Token(Token = "0x600B002")] [Address(RVA = "0x268A6F0", Offset = "0x26890F0", VA = "0x18268A6F0")] public IAsyncResult BeginConnect(IPAddress[] addresses, int port, AsyncCallback requestCallback, object state) { Socket socket = this.client; IAsyncResult asyncResult; return asyncResult; } // Token: 0x0600B003 RID: 45059 RVA: 0x00293268 File Offset: 0x00291468 [Token(Token = "0x600B003")] [Address(RVA = "0x268A750", Offset = "0x2689150", VA = "0x18268A750")] public IAsyncResult BeginConnect(string host, int port, AsyncCallback requestCallback, object state) { Socket socket = this.client; IAsyncResult asyncResult; return asyncResult; } // Token: 0x0600B004 RID: 45060 RVA: 0x00293284 File Offset: 0x00291484 [Token(Token = "0x600B004")] [Address(RVA = "0x268B560", Offset = "0x2689F60", VA = "0x18268B560", Slot = "4")] void IDisposable.Dispose() { this.System.IDisposable.Dispose(); GC.SuppressFinalize(this); } // Token: 0x0600B005 RID: 45061 RVA: 0x002932A0 File Offset: 0x002914A0 [Token(Token = "0x600B005")] [Address(RVA = "0x268B040", Offset = "0x2689A40", VA = "0x18268B040", 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: 0x0600B006 RID: 45062 RVA: 0x00293300 File Offset: 0x00291500 [Token(Token = "0x600B006")] [Address(RVA = "0x268B0C0", Offset = "0x2689AC0", VA = "0x18268B0C0", Slot = "1")] protected override void Finalize() { int num; do { num = 0; this.System.IDisposable.Dispose(); base..ctor(); if (num != -1) { } } while (num != 0); } // Token: 0x0600B007 RID: 45063 RVA: 0x00293324 File Offset: 0x00291524 [Token(Token = "0x600B007")] [Address(RVA = "0x268B160", Offset = "0x2689B60", VA = "0x18268B160")] public Stream GetStream() { /* An exception occurred when decompiling this method (0600B007) 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_29: 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: 0x0600B008 RID: 45064 RVA: 0x00293360 File Offset: 0x00291560 [Token(Token = "0x600B008")] [Address(RVA = "0x268A780", Offset = "0x2689180", VA = "0x18268A780")] private void CheckDisposed() { } // Token: 0x040073B4 RID: 29620 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x40073B4")] private NetworkStream stream; // Token: 0x040073B5 RID: 29621 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x40073B5")] private bool active; // Token: 0x040073B6 RID: 29622 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x40073B6")] private Socket client; // Token: 0x040073B7 RID: 29623 [global::Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x40073B7")] private bool disposed; // Token: 0x040073B8 RID: 29624 [global::Cpp2IlInjected.FieldOffset(Offset = "0x2C")] [Token(Token = "0x40073B8")] private TcpClient.Properties values; // Token: 0x040073B9 RID: 29625 [global::Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x40073B9")] private int recv_timeout; // Token: 0x040073BA RID: 29626 [global::Cpp2IlInjected.FieldOffset(Offset = "0x34")] [Token(Token = "0x40073BA")] private int send_timeout; // Token: 0x040073BB RID: 29627 [global::Cpp2IlInjected.FieldOffset(Offset = "0x38")] [Token(Token = "0x40073BB")] private int recv_buffer_size; // Token: 0x040073BC RID: 29628 [global::Cpp2IlInjected.FieldOffset(Offset = "0x3C")] [Token(Token = "0x40073BC")] private int send_buffer_size; // Token: 0x040073BD RID: 29629 [global::Cpp2IlInjected.FieldOffset(Offset = "0x40")] [Token(Token = "0x40073BD")] private LingerOption linger_state; // Token: 0x040073BE RID: 29630 [global::Cpp2IlInjected.FieldOffset(Offset = "0x48")] [Token(Token = "0x40073BE")] private bool no_delay; // Token: 0x02001998 RID: 6552 [Token(Token = "0x2001998")] private enum Properties : uint { // Token: 0x040073C1 RID: 29633 [Token(Token = "0x40073C1")] LingerState = 1U, // Token: 0x040073C2 RID: 29634 [Token(Token = "0x40073C2")] NoDelay, // Token: 0x040073C3 RID: 29635 [Token(Token = "0x40073C3")] ReceiveBufferSize = 4U, // Token: 0x040073C4 RID: 29636 [Token(Token = "0x40073C4")] ReceiveTimeout = 8U, // Token: 0x040073C5 RID: 29637 [Token(Token = "0x40073C5")] SendBufferSize = 16U, // Token: 0x040073C6 RID: 29638 [Token(Token = "0x40073C6")] SendTimeout = 32U } } }