diff --git a/Telegram/SourceFiles/mtproto/special_config_request.cpp b/Telegram/SourceFiles/mtproto/special_config_request.cpp
index d8093ec3b..8b57956b7 100644
--- a/Telegram/SourceFiles/mtproto/special_config_request.cpp
+++ b/Telegram/SourceFiles/mtproto/special_config_request.cpp
@@ -453,7 +453,7 @@ void DomainResolver::resolve(const AttemptKey &key) {
 	auto hosts = DnsDomains();
 	std::random_device rd;
 	ranges::shuffle(hosts, std::mt19937(rd()));
-	_attempts.emplace(key, std::move(hosts));
+	_attempts.emplace(key, Attempts{ std::move(hosts) });
 	sendNextRequest(key);
 }
 
@@ -478,12 +478,13 @@ void DomainResolver::sendNextRequest(const AttemptKey &key) {
 	if (i == end(_attempts)) {
 		return;
 	}
-	auto &hosts = i->second;
+	auto &attempts = i->second;
+	auto &hosts = attempts.hosts;
 	const auto host = hosts.back();
 	hosts.pop_back();
 
 	if (!hosts.empty()) {
-		App::CallDelayed(kSendNextTimeout, this, [=] {
+		App::CallDelayed(kSendNextTimeout, &attempts.guard, [=] {
 			sendNextRequest(key);
 		});
 	}
diff --git a/Telegram/SourceFiles/mtproto/special_config_request.h b/Telegram/SourceFiles/mtproto/special_config_request.h
index cba2e71b0..be12d759f 100644
--- a/Telegram/SourceFiles/mtproto/special_config_request.h
+++ b/Telegram/SourceFiles/mtproto/special_config_request.h
@@ -91,6 +91,11 @@ private:
 		QStringList ips;
 		crl::time expireAt = 0;
 
+	};
+	struct Attempts {
+		std::vector<QString> hosts;
+		base::has_weak_ptr guard;
+
 	};
 
 	void resolve(const AttemptKey &key);
@@ -110,7 +115,7 @@ private:
 		crl::time expireAt)> _callback;
 
 	QNetworkAccessManager _manager;
-	std::map<AttemptKey, std::vector<QString>> _attempts;
+	std::map<AttemptKey, Attempts> _attempts;
 	std::map<AttemptKey, std::vector<ServiceWebRequest>> _requests;
 	std::map<AttemptKey, CacheEntry> _cache;
 	crl::time _lastTimestamp = 0;