diff options
Diffstat (limited to 'browser/networkmanager.cpp')
-rw-r--r-- | browser/networkmanager.cpp | 25 |
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"; + } +} |