From 1912632722f01be5a91afaba7cb4da8025a3613e Mon Sep 17 00:00:00 2001 From: Wizou <11647984+wiz0u@users.noreply.github.com> Date: Mon, 22 Dec 2025 02:34:29 +0100 Subject: [PATCH] Immediate remigrate to MainDC in case reconnection is only possible through a different DcID --- src/Client.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Client.cs b/src/Client.cs index 18a9b29..ce16017 100644 --- a/src/Client.cs +++ b/src/Client.cs @@ -871,6 +871,7 @@ namespace WTelegram { _cts = new(); IPEndPoint endpoint = null; + bool needMigrate = false; byte[] preamble, secret = null; int dcId = _dcSession?.DcID ?? 0; if (dcId == 0) dcId = 2; @@ -943,6 +944,7 @@ namespace WTelegram { endpoint = GetDefaultEndpoint(out defaultDc); // re-ask callback for an address if (!triedEndpoints.Add(endpoint)) throw; + needMigrate = _dcSession.DataCenter.id == _session.MainDC && defaultDc != _session.MainDC; _dcSession.Client = null; // is it address for a known DCSession? _dcSession = _session.DCSessions.Values.FirstOrDefault(dcs => dcs.EndPoint.Equals(endpoint)); @@ -1001,6 +1003,7 @@ namespace WTelegram _session.DCSessions[TLConfig.this_dc] = _dcSession; } if (_session.MainDC == 0) _session.MainDC = TLConfig.this_dc; + else if (needMigrate) await MigrateToDC(_session.MainDC); } } finally