Propagate errors during /login & /versions
2 files changed, 10 insertions, 12 deletions
diff --git a/src/LoginPage.cc b/src/LoginPage.cc
index 3be9d1a9..6c01670a 100644
--- a/src/LoginPage.cc
+++ b/src/LoginPage.cc
@@ -222,20 +222,8 @@ LoginPage::onServerAddressEntered()
void
LoginPage::versionError(QString error)
{
- // Matrix homeservers are often kept on a subdomain called 'matrix'
- // so let's try that next, unless the address was set explicitly or the domain
- // part of the username already points to this subdomain
QUrl currentServer = client_->getHomeServer();
QString mxidAddress = matrixid_input_->text().split(":").at(1);
- if (currentServer.host() == inferredServerAddress_ &&
- !currentServer.host().startsWith("matrix")) {
- error_label_->setText("");
- currentServer.setHost(QString("matrix.") + currentServer.host());
- serverInput_->setText(currentServer.host());
- client_->setServer(currentServer.host());
- client_->versions();
- return;
- }
error_label_->setText(error);
serverInput_->show();
diff --git a/src/MatrixClient.cc b/src/MatrixClient.cc
index b5c4900b..bcf7a62b 100644
--- a/src/MatrixClient.cc
+++ b/src/MatrixClient.cc
@@ -123,6 +123,11 @@ MatrixClient::login(const QString &username, const QString &password) noexcept
int status_code =
reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ if (reply->error()) {
+ emit loginError(reply->errorString());
+ return;
+ }
+
if (status_code == 403) {
emit loginError(tr("Wrong username or password"));
return;
@@ -428,6 +433,11 @@ MatrixClient::versions() noexcept
int status_code =
reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ if (reply->error()) {
+ emit versionError(reply->errorString());
+ return;
+ }
+
if (status_code == 404) {
emit versionError("Versions endpoint was not found on the server. Possibly "
"not a Matrix server");
|