From 37bf9ffcff1d501105223a186ea96e774a09d723 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 24 May 2018 16:40:19 +0300 Subject: [PATCH] Show bad proxy configuration error. --- Telegram/SourceFiles/lang/lang_hardcoded.h | 4 ++++ Telegram/SourceFiles/messenger.cpp | 10 ++++++++++ Telegram/SourceFiles/messenger.h | 3 +++ Telegram/SourceFiles/mtproto/connection.cpp | 5 +++++ Telegram/SourceFiles/mtproto/mtp_instance.cpp | 11 +++++++++++ Telegram/SourceFiles/mtproto/mtp_instance.h | 1 + 6 files changed, 34 insertions(+) diff --git a/Telegram/SourceFiles/lang/lang_hardcoded.h b/Telegram/SourceFiles/lang/lang_hardcoded.h index 2247e0441..1cfc93df7 100644 --- a/Telegram/SourceFiles/lang/lang_hardcoded.h +++ b/Telegram/SourceFiles/lang/lang_hardcoded.h @@ -26,5 +26,9 @@ inline QString ClearPathFailed() { return qsl("Clear failed :("); } +inline QString ProxyConfigError() { + return qsl("The proxy you are using is not configured correctly and will be disabled. Please find another one."); +} + } // namespace Hard } // namespace Lang diff --git a/Telegram/SourceFiles/messenger.cpp b/Telegram/SourceFiles/messenger.cpp index 461045417..cc4d9b5ec 100644 --- a/Telegram/SourceFiles/messenger.cpp +++ b/Telegram/SourceFiles/messenger.cpp @@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_file_parser.h" #include "lang/lang_translator.h" #include "lang/lang_cloud_manager.h" +#include "lang/lang_hardcoded.h" #include "observer_peer.h" #include "storage/file_upload.h" #include "mainwidget.h" @@ -44,6 +45,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/qthelp_url.h" #include "boxes/connection_box.h" #include "boxes/confirm_phone_box.h" +#include "boxes/confirm_box.h" #include "boxes/share_box.h" namespace { @@ -305,6 +307,14 @@ void Messenger::setCurrentProxy( Global::RefConnectionTypeChanged().notify(); } +void Messenger::badMtprotoConfigurationError() { + if (Global::UseProxy() && !_badProxyDisableBox) { + _badProxyDisableBox = Ui::show(Box( + Lang::Hard::ProxyConfigError(), + [=] { setCurrentProxy(Global::SelectedProxy(), false); })); + } +} + void Messenger::setMtpMainDcId(MTP::DcId mainDcId) { Expects(!_mtproto); diff --git a/Telegram/SourceFiles/messenger.h b/Telegram/SourceFiles/messenger.h index 51b749be3..3a92c44cf 100644 --- a/Telegram/SourceFiles/messenger.h +++ b/Telegram/SourceFiles/messenger.h @@ -17,6 +17,7 @@ class MainWidget; class FileUploader; class Translator; class MediaView; +class BoxContent; namespace Core { class Launcher; @@ -99,6 +100,7 @@ public: return _dcOptions.get(); } void setCurrentProxy(const ProxyData &proxy, bool enabled); + void badMtprotoConfigurationError(); // Set from legacy storage. void setMtpMainDcId(MTP::DcId mainDcId); @@ -240,6 +242,7 @@ private: std::unique_ptr _authSession; base::Observable _authSessionChanged; base::Observable _passcodedChanged; + QPointer _badProxyDisableBox; std::unique_ptr _audio; QImage _logo; diff --git a/Telegram/SourceFiles/mtproto/connection.cpp b/Telegram/SourceFiles/mtproto/connection.cpp index 38dfa6410..426d051ad 100644 --- a/Telegram/SourceFiles/mtproto/connection.cpp +++ b/Telegram/SourceFiles/mtproto/connection.cpp @@ -2983,6 +2983,11 @@ void ConnectionPrivate::onError( qint32 errorCode) { if (errorCode == -429) { LOG(("Protocol Error: -429 flood code returned!")); + } else if (errorCode == -444) { + LOG(("Protocol Error: -444 bad dc_id code returned!")); + InvokeQueued(_instance, [instance = _instance] { + instance->badConfigurationError(); + }); } removeTestConnection(connection); diff --git a/Telegram/SourceFiles/mtproto/mtp_instance.cpp b/Telegram/SourceFiles/mtproto/mtp_instance.cpp index 3350ed075..2a9065efb 100644 --- a/Telegram/SourceFiles/mtproto/mtp_instance.cpp +++ b/Telegram/SourceFiles/mtproto/mtp_instance.cpp @@ -54,6 +54,7 @@ public: void requestConfigIfOld(); void requestCDNConfig(); void setUserPhone(const QString &phone); + void badConfigurationError(); void restart(); void restart(ShiftedDcId shiftedDcId); @@ -398,6 +399,12 @@ void Instance::Private::setUserPhone(const QString &phone) { } } +void Instance::Private::badConfigurationError() { + if (_mode == Mode::Normal) { + Messenger::Instance().badMtprotoConfigurationError(); + } +} + void Instance::Private::requestConfigIfOld() { const auto timeout = Global::BlockedMode() ? kConfigBecomesOldForBlockedIn @@ -1484,6 +1491,10 @@ void Instance::setUserPhone(const QString &phone) { _private->setUserPhone(phone); } +void Instance::badConfigurationError() { + _private->badConfigurationError(); +} + void Instance::requestConfigIfOld() { _private->requestConfigIfOld(); } diff --git a/Telegram/SourceFiles/mtproto/mtp_instance.h b/Telegram/SourceFiles/mtproto/mtp_instance.h index 7c53c086e..5a67b1f8b 100644 --- a/Telegram/SourceFiles/mtproto/mtp_instance.h +++ b/Telegram/SourceFiles/mtproto/mtp_instance.h @@ -140,6 +140,7 @@ public: void requestConfigIfOld(); void requestCDNConfig(); void setUserPhone(const QString &phone); + void badConfigurationError(); ~Instance();