diff options
author | Frederik Gladhorn <frederik.gladhorn@qt.io> | 2017-09-02 10:27:08 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@qt.io> | 2017-09-02 10:27:09 +0200 |
commit | 9831118378c5d489f76089011277a1b7234a8d68 (patch) | |
tree | a67e82fde179fa727172fff9098758d60912189d /src/network/access/qnetworkaccessmanager.cpp | |
parent | b5d471d0c23128528a0aa33ed5172bb1bab05bb1 (diff) | |
parent | 4fa90c1757c15425d5e0df1a4f5dbc7e77c265f8 (diff) |
Merge dev into 5.10
Change-Id: I5fb5e7e6e57bb5db6fcb1f670f7f6cbc8def2d60
Diffstat (limited to 'src/network/access/qnetworkaccessmanager.cpp')
-rw-r--r-- | src/network/access/qnetworkaccessmanager.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index eeee82a87c..15a0359391 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -71,6 +71,8 @@ #include "qthread.h" +#include <QHostInfo> + QT_BEGIN_NAMESPACE Q_GLOBAL_STATIC(QNetworkAccessFileBackendFactory, fileBackend) @@ -689,7 +691,7 @@ void QNetworkAccessManager::setCookieJar(QNetworkCookieJar *cookieJar) if (d->cookieJar && d->cookieJar->parent() == this) delete d->cookieJar; d->cookieJar = cookieJar; - if (thread() == cookieJar->thread()) + if (cookieJar && thread() == cookieJar->thread()) d->cookieJar->setParent(this); } } @@ -1366,10 +1368,16 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera } #ifndef QT_NO_BEARERMANAGEMENT + // Return a disabled network reply if network access is disabled. - // Except if the scheme is empty or file://. + // Except if the scheme is empty or file:// or if the host resolves to a loopback address. if (d->networkAccessible == NotAccessible && !isLocalFile) { - return new QDisabledNetworkReply(this, req, op); + QHostAddress dest; + QString host = req.url().host().toLower(); + if (!(dest.setAddress(host) && dest.isLoopback()) && host != QLatin1String("localhost") + && host != QHostInfo::localHostName().toLower()) { + return new QDisabledNetworkReply(this, req, op); + } } if (!d->networkSessionStrongRef && (d->initializeSession || !d->networkConfiguration.identifier().isEmpty())) { |