diff --git a/TLSharp.Core/DataCenterIPVersion.cs b/TLSharp.Core/DataCenterIPVersion.cs
index 3eca471..7b8b825 100644
--- a/TLSharp.Core/DataCenterIPVersion.cs
+++ b/TLSharp.Core/DataCenterIPVersion.cs
@@ -7,24 +7,24 @@
public enum DataCenterIPVersion
{
///
- /// Prefers IPv6 addresses if any is passed by Telegram
+ /// Picks the first available address passed by Telegram
///
- Default = 0,
+ Default,
///
/// Takes only IPv4 addresses
///
- OnlyIPv4 = 1,
+ OnlyIPv4,
///
/// Takes only IPv6 addresses
///
- OnlyIPv6 = 2,
+ OnlyIPv6,
///
/// Connection to IPv4 addresses is preferred to IPv6 addresses
///
- PreferIPv4 = 3,
+ PreferIPv4,
///
/// Connection to IPv6 addresses is preferred to IPv4 addresses
///
- PreferIPv6 = 4,
+ PreferIPv6,
}
}
diff --git a/TLSharp.Core/TelegramClient.cs b/TLSharp.Core/TelegramClient.cs
index ca405bf..f8adc88 100644
--- a/TLSharp.Core/TelegramClient.cs
+++ b/TLSharp.Core/TelegramClient.cs
@@ -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);