Compare commits

...

2 commits

Author SHA1 Message Date
Povilas Kanapickas
f5009e83a9
Merge fb610a3d07 into 2f967978f2 2024-10-14 14:30:59 +02:00
Povilas Kanapickas
fb610a3d07 Do not prevent login if .well-known response is invalid
The current code results in confusing behavior under the following
circumstances:

 - Homeserver is guessed correctly from the Matrix ID

- The server returns invalid (e.g. HTTP 200 with empty body) response
for .well-known data

The user will be presented with "Autodiscovery failed. Received
malformed response" message even though all details are entered
correctly. Login button will not work. The only workaround is to edit
the home server field a few times so that homeserverChanged() and
checkHomeserverVersion() would be invoked.

This is not optimal, especially because autodiscovery based on
.well-known is optional. The solution is to always invoke
checkHomeserverVersion() even when autodiscovery fails due to any
reason.

checkHomeserverVersion() will check the home server against required
Matrix API endpoints. If this fails, user will be presented with error
messages instructing to check home server URL. Accordingly, allowing to
continue in case of failed autodiscovery does not reduce clarity of
errors presented to the user.
2024-09-24 19:02:55 +03:00

View file

@ -115,17 +115,16 @@ LoginPage::onMatrixIdEntered()
} }
if (!err->parse_error.empty()) { if (!err->parse_error.empty()) {
emit versionErrorCb(tr("Autodiscovery failed. Received malformed response."));
nhlog::net()->error("Autodiscovery failed. Received malformed response. {}", nhlog::net()->error("Autodiscovery failed. Received malformed response. {}",
err->parse_error); err->parse_error);
checkHomeserverVersion();
return; return;
} }
emit versionErrorCb(tr("Autodiscovery failed. Unknown error when "
"requesting .well-known."));
nhlog::net()->error("Autodiscovery failed. Unknown error when " nhlog::net()->error("Autodiscovery failed. Unknown error when "
"requesting .well-known. {}", "requesting .well-known. {}",
*err); *err);
checkHomeserverVersion();
return; return;
} }