diff --git a/src/lib/network/networkmanager.cpp b/src/lib/network/networkmanager.cpp index 088dfc32b..27b371314 100644 --- a/src/lib/network/networkmanager.cpp +++ b/src/lib/network/networkmanager.cpp @@ -84,6 +84,9 @@ NetworkManager::NetworkManager(QObject* parent) m_proxyFactory = new NetworkProxyFactory(); setProxyFactory(m_proxyFactory); loadSettings(); + + m_sslv3Sites << QLatin1String("centrum.sk") << QLatin1String("oneaccount.com") << QLatin1String("www.hdi.de") + << QLatin1String("live.com"); } void NetworkManager::loadSettings() @@ -571,6 +574,18 @@ QNetworkReply* NetworkManager::createRequest(QNetworkAccessManager::Operation op } } + // Force SSLv3 for servers that doesn't understand TLSv1 handshake + if (req.url().scheme() == QLatin1String("https")) { + foreach (const QString &host, m_sslv3Sites) { + if (req.url().host().endsWith(host)) { + QSslConfiguration conf = req.sslConfiguration(); + conf.setProtocol(QSsl::SslV3); + req.setSslConfiguration(conf); + break; + } + } + } + return QNetworkAccessManager::createRequest(op, req, outgoingData); } diff --git a/src/lib/network/networkmanager.h b/src/lib/network/networkmanager.h index 7fd1d77e5..a1723a469 100644 --- a/src/lib/network/networkmanager.h +++ b/src/lib/network/networkmanager.h @@ -73,6 +73,7 @@ private: AdBlockManager* m_adblockManager; NetworkProxyFactory* m_proxyFactory; + QStringList m_sslv3Sites; QStringList m_certPaths; QList m_caCerts; QList m_localCerts;