From a266b896d25d13e164f4a7dfb7703e24270e4648 Mon Sep 17 00:00:00 2001 From: solarin Date: Sat, 11 Apr 2020 18:59:59 +0400 Subject: [PATCH] mediaonly filter reverted tcptransport --- TLSharp.Core/Network/TcpTransport.cs | 27 +++++++++------------------ TLSharp.Core/TelegramClient.cs | 25 ++++++++++++++----------- 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/TLSharp.Core/Network/TcpTransport.cs b/TLSharp.Core/Network/TcpTransport.cs index 60c86d2..71bcdd9 100644 --- a/TLSharp.Core/Network/TcpTransport.cs +++ b/TLSharp.Core/Network/TcpTransport.cs @@ -18,39 +18,30 @@ namespace TLSharp.Core.Network TcpClientConnectionHandler handler; readonly string address; readonly int port; - readonly IPAddress ipAddress; + readonly IPAddress ipAddress; public TcpTransport(string address, int port, TcpClientConnectionHandler handler = null) - { - this.handler = handler; - this.address = address; - this.port = port; - ipAddress = IPAddress.Parse(address); - } - - public async Task ConnectAsync() { if (handler == null) { - if (tcpClient != null) - { - tcpClient.Close(); - } + var ipAddress = IPAddress.Parse(address); + var endpoint = new IPEndPoint(ipAddress, port); + tcpClient = new TcpClient(ipAddress.AddressFamily); try { - await tcpClient.ConnectAsync(ipAddress, port); - } catch (Exception ex) { - throw new Exception ($"Problem when trying to connect to {ipAddress}:{port}; either there's no internet connection or the IP address version is not compatible (if the latter, consider using DataCenterIPVersion enum)", + tcpClient.Connect(endpoint); + } + catch (Exception ex) + { + throw new Exception($"Problem when trying to connect to {endpoint}; either there's no internet connection or the IP address version is not compatible (if the latter, consider using DataCenterIPVersion enum)", ex); } } else tcpClient = handler(address, port); - sendCounter = 0; - if (tcpClient.Connected) { stream = tcpClient.GetStream(); diff --git a/TLSharp.Core/TelegramClient.cs b/TLSharp.Core/TelegramClient.cs index 5a83bd8..d180680 100644 --- a/TLSharp.Core/TelegramClient.cs +++ b/TLSharp.Core/TelegramClient.cs @@ -65,22 +65,22 @@ namespace TLSharp.Core this.apiId = apiId; this.handler = handler; this.dcIpVersion = dcIpVersion; - - session = Session.TryLoadOrCreateNew(this.store, sessionUserId); - transport = new TcpTransport (session.DataCenter.Address, session.DataCenter.Port, this.handler); } public async Task ConnectAsync(bool reconnect = false, CancellationToken token = default(CancellationToken)) { token.ThrowIfCancellationRequested(); - if (!transport.IsConnected) - { - // we must recreate the session because it might track dirty information - // of a connection that maybe was disconnected, reusing that session will cause errors - session = Session.TryLoadOrCreateNew(store, sessionUserId); - await transport.ConnectAsync(); - } + //if (!transport.IsConnected) + //{ + // // we must recreate the session because it might track dirty information + // // of a connection that maybe was disconnected, reusing that session will cause errors + // session = Session.TryLoadOrCreateNew(store, sessionUserId); + // await transport.ConnectAsync(); + //} + + session = Session.TryLoadOrCreateNew(store, sessionUserId); + transport = new TcpTransport(session.DataCenter.Address, session.DataCenter.Port, this.handler); if (session.AuthKey == null || reconnect) { @@ -131,6 +131,8 @@ namespace TLSharp.Core else dcs = dcOptions.Where(d => d.Id == dcId); // any + dcs = dcs.Where(d => !d.MediaOnly);//.AsEnumerable(); + TLDcOption dc; if (dcIpVersion != DataCenterIPVersion.Default) { @@ -144,8 +146,9 @@ namespace TLSharp.Core var dataCenter = new DataCenter (dcId, dc.IpAddress, dc.Port); - transport = new TcpTransport(dc.IpAddress, dc.Port, handler); + //transport = new TcpTransport(dc.IpAddress, dc.Port, handler); session.DataCenter = dataCenter; + session.Save(); await ConnectAsync(true, token).ConfigureAwait(false);