From 0015cf494bea2edce13be36665f177574edadac1 Mon Sep 17 00:00:00 2001 From: Daniel Vygolov Date: Sat, 23 Sep 2017 16:06:54 +0400 Subject: [PATCH] Added new type of DataCenterMigrateException - NetworkMigrateException Now we catch not only PhoneMigrateException but all DataCenterMigrationExceptions and reconnect Fixes #568 --- TLSharp.Core/Network/MtProtoSender.cs | 16 +++++++++++++++- TLSharp.Core/TelegramClient.cs | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/TLSharp.Core/Network/MtProtoSender.cs b/TLSharp.Core/Network/MtProtoSender.cs index 8a959ca..f45af2d 100644 --- a/TLSharp.Core/Network/MtProtoSender.cs +++ b/TLSharp.Core/Network/MtProtoSender.cs @@ -305,6 +305,12 @@ namespace TLSharp.Core.Network var dcIdx = int.Parse(resultString); throw new UserMigrationException(dcIdx); } + else if (errorMessage.StartsWith("NETWORK_MIGRATE_")) + { + var resultString = Regex.Match(errorMessage, @"\d+").Value; + var dcIdx = int.Parse(resultString); + throw new NetworkMigrationException(dcIdx); + } else if (errorMessage == "PHONE_CODE_INVALID") { throw new InvalidPhoneCodeException("The numeric code used to authenticate does not match the numeric code sent by SMS/Telegram"); @@ -571,4 +577,12 @@ namespace TLSharp.Core.Network { } } -} \ No newline at end of file + + internal class NetworkMigrationException : DataCenterMigrationException + { + internal NetworkMigrationException(int dc) + : base($"Network located on a different DC: {dc}.", dc) + { + } + } +} diff --git a/TLSharp.Core/TelegramClient.cs b/TLSharp.Core/TelegramClient.cs index a8f8842..5aca5c0 100644 --- a/TLSharp.Core/TelegramClient.cs +++ b/TLSharp.Core/TelegramClient.cs @@ -145,7 +145,7 @@ namespace TLSharp.Core completed = true; } - catch (PhoneMigrationException ex) + catch (DataCenterMigrationException ex) { await ReconnectToDcAsync(ex.DC); }