summaryrefslogtreecommitdiff
path: root/browser/networkmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'browser/networkmanager.cpp')
-rw-r--r--browser/networkmanager.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/browser/networkmanager.cpp b/browser/networkmanager.cpp
index 57c853b..dbe14ca 100644
--- a/browser/networkmanager.cpp
+++ b/browser/networkmanager.cpp
@@ -16,6 +16,7 @@
#include <QDBusMessage>
#include <QAuthenticator>
#include <QEventLoop>
+#include <QNetworkReply>
networkmanager::networkmanager(QNetworkAccessManager *nam, QObject *parent) :
QObject(parent), m_nam (nam)
@@ -24,6 +25,8 @@ networkmanager::networkmanager(QNetworkAccessManager *nam, QObject *parent) :
connect(nam, SIGNAL(authenticationRequired(QNetworkReply *, QAuthenticator *)),
this,SLOT (onAuthenticationRequired(QNetworkReply *, QAuthenticator *)));
+ connect(nam, SIGNAL(sslErrors(QNetworkReply *, const QList<QSslError> &)),
+ this,SLOT (onSslErrors(QNetworkReply *, const QList<QSslError> &)));
}
conn::brw::ERROR_IDS networkmanager::closeAuthenticationDialog(conn::brw::DIALOG_RESULT res, const conn::brw::AuthenticationData& data)
@@ -33,6 +36,8 @@ conn::brw::ERROR_IDS networkmanager::closeAuthenticationDialog(conn::brw::DIALOG
}
conn::brw::ERROR_IDS networkmanager::closeSslErrorDialog(conn::brw::DIALOG_RESULT res, bool saveCert)
{
+ emit doCloseSslErrorDialog(res == conn::brw::DR_OK, saveCert);
+ return conn::brw::EID_NO_ERROR;
}
void networkmanager::onAuthenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
@@ -53,3 +58,23 @@ void networkmanager::onAuthenticationRequired(QNetworkReply *reply, QAuthenticat
qDebug() << "Action was cancelled";
}
}
+
+void networkmanager::onSslErrors(QNetworkReply *reply, const QList<QSslError> & errors)
+{
+ conn::brw::SslError data;
+ data.sslError = conn::brw::UnableToGetIssuerCertificate;
+ emit onSslErrorDialog(data);
+ qDebug() << "SSL error; action required";
+ QEventLoop loop;
+ connect (this, SIGNAL(doCloseSslErrorDialog(bool, bool)), this, SLOT(closeSsl(bool, bool)));
+ connect (this, SIGNAL(doCloseSslErrorDialog(bool, bool)), &loop, SLOT(quit()));
+ loop.exec();
+ qDebug() << "SSL error action provided: isOK" << m_isSslOk << "save cert:" << m_sslSaveCert;
+
+ if (m_isSslOk) {
+ reply->ignoreSslErrors();
+ qDebug() << "Ignoring error";
+ } else {
+ qDebug() << "Halting on error";
+ }
+}