Merge PR #3310: Correctly handle ServerResolver errors, with dedicated signal and slot

This commit is contained in:
Mikkel Krautz 2018-01-21 17:09:53 +01:00 committed by GitHub
commit e5ff9c5225
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 0 deletions

View File

@ -809,6 +809,7 @@ static void recreateServerHandler() {
g.sh = sh;
g.mw->connect(sh.get(), SIGNAL(connected()), g.mw, SLOT(serverConnected()));
g.mw->connect(sh.get(), SIGNAL(disconnected(QAbstractSocket::SocketError, QString)), g.mw, SLOT(serverDisconnected(QAbstractSocket::SocketError, QString)));
g.mw->connect(sh.get(), SIGNAL(error(QAbstractSocket::SocketError, QString)), g.mw, SLOT(resolverError(QAbstractSocket::SocketError, QString)));
}
void MainWindow::openUrl(const QUrl &url) {
@ -3013,6 +3014,21 @@ void MainWindow::serverDisconnected(QAbstractSocket::SocketError err, QString re
AudioInput::setMaxBandwidth(-1);
}
void MainWindow::resolverError(QAbstractSocket::SocketError, QString reason) {
if (! reason.isEmpty()) {
g.l->log(Log::ServerDisconnected, tr("Server connection failed: %1.").arg(Qt::escape(reason)));
} else {
g.l->log(Log::ServerDisconnected, tr("Server connection failed."));
}
if (g.s.bReconnect) {
qaServerDisconnect->setEnabled(true);
if (bRetryServer) {
qtReconnect->start();
}
}
}
void MainWindow::trayAboutToShow() {
bool top = false;

View File

@ -267,6 +267,7 @@ class MainWindow : public QMainWindow, public MessageHandler, public Ui::MainWin
void qtvUserCurrentChanged(const QModelIndex &, const QModelIndex &);
void serverConnected();
void serverDisconnected(QAbstractSocket::SocketError, QString reason);
void resolverError(QAbstractSocket::SocketError, QString reason);
void viewCertificate(bool);
void openUrl(const QUrl &url);
void context_triggered();

View File

@ -295,6 +295,7 @@ void ServerHandler::run() {
int ret = exec();
if (ret < 0) {
qWarning("ServerHandler: failed to resolve hostname");
emit error(QAbstractSocket::HostNotFoundError, tr("Unable to resolve hostname"));
return;
}
}

View File

@ -135,6 +135,7 @@ class ServerHandler : public QThread {
void disconnect();
void run() Q_DECL_OVERRIDE;
signals:
void error(QAbstractSocket::SocketError, QString reason);
void disconnected(QAbstractSocket::SocketError, QString reason);
void connected();
void pingRequested();