From aed1440d267f043cfd5bc632cff3758f7cd4bf1e Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Wed, 5 Oct 2022 19:20:14 +0200
Subject: [PATCH] Don't let old server lookups overwrite new ones

---
 src/LoginPage.cpp    | 8 +++++++-
 src/RegisterPage.cpp | 6 +++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/LoginPage.cpp b/src/LoginPage.cpp
index b288066be..567e8c824 100644
--- a/src/LoginPage.cpp
+++ b/src/LoginPage.cpp
@@ -108,7 +108,13 @@ LoginPage::onMatrixIdEntered()
         emit homeserverChanged();
 
         http::client()->well_known(
-          [this](const mtx::responses::WellKnown &res, mtx::http::RequestErr err) {
+          [this, orginal_hostname = user.hostname()](const mtx::responses::WellKnown &res,
+                                                     mtx::http::RequestErr err) {
+              // Ignore if server changed
+              auto currentUser = parse<User>(mxid_.toStdString());
+              if (currentUser.hostname() != orginal_hostname)
+                  return;
+
               if (err) {
                   if (err->status_code == 404) {
                       nhlog::net()->info("Autodiscovery: No .well-known.");
diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp
index 2285ac29e..823028580 100644
--- a/src/RegisterPage.cpp
+++ b/src/RegisterPage.cpp
@@ -67,7 +67,11 @@ RegisterPage::setServer(const QString &server)
     emit lookingUpHsChanged();
 
     http::client()->well_known(
-      [this](const mtx::responses::WellKnown &res, mtx::http::RequestErr err) {
+      [this, prevServer = server](const mtx::responses::WellKnown &res, mtx::http::RequestErr err) {
+          // server changed in between
+          if (lastServer != prevServer)
+              return;
+
           if (err) {
               if (err->status_code == 404) {
                   nhlog::net()->info("Autodiscovery: No .well-known.");
-- 
GitLab