- removed assignements to int for the Enum DataCenterIPVersion

- removed sorting of the list of addresses if the DataCenterIPVersion.Default is chosen
This commit is contained in:
solarin 2020-04-03 21:25:55 +04:00
parent 365fe6775e
commit 2f67993e93
2 changed files with 18 additions and 12 deletions

View file

@ -7,24 +7,24 @@
public enum DataCenterIPVersion
{
/// <summary>
/// Prefers IPv6 addresses if any is passed by Telegram
/// Picks the first available address passed by Telegram
/// </summary>
Default = 0,
Default,
/// <summary>
/// Takes only IPv4 addresses
/// </summary>
OnlyIPv4 = 1,
OnlyIPv4,
/// <summary>
/// Takes only IPv6 addresses
/// </summary>
OnlyIPv6 = 2,
OnlyIPv6,
/// <summary>
/// Connection to IPv4 addresses is preferred to IPv6 addresses
/// </summary>
PreferIPv4 = 3,
PreferIPv4,
/// <summary>
/// Connection to IPv6 addresses is preferred to IPv4 addresses
/// </summary>
PreferIPv6 = 4,
PreferIPv6,
}
}

View file

@ -121,12 +121,18 @@ namespace TLSharp.Core
|| dcIpVersion == DataCenterIPVersion.PreferIPv4 // we can take both types of address
|| dcIpVersion == DataCenterIPVersion.PreferIPv6 // we can take both types of address
)
).OrderBy(d => d.Ipv6);
);
if (dcs.Count() == 0)
throw new Exception($"Telegram server didn't provide us with any IPAddress that matches your preferences. If you chose OnlyIPvX, try switch to PreferIPvX instead.");
var dc = dcIpVersion == DataCenterIPVersion.PreferIPv4 ? dcs.First() : dcs.Last(); // ipv4 addresses are at the beginning of the list because it was ordered
TLDcOption dc;
if (dcIpVersion != DataCenterIPVersion.Default)
{
if (dcs.Count() == 0)
throw new Exception($"Telegram server didn't provide us with any IPAddress that matches your preferences. If you chose OnlyIPvX, try switch to PreferIPvX instead.");
dcs = dcs.OrderBy(d => d.Ipv6);
dc = dcIpVersion == DataCenterIPVersion.PreferIPv4 ? dcs.First() : dcs.Last(); // ipv4 addresses are at the beginning of the list because it was ordered
}
else
dc = dcs.First();
var dataCenter = new DataCenter (dcId, dc.IpAddress, dc.Port);