Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #45 from lpotter/1242
[qtbase] Fixes MER#1242 make UnknownAccessibility not block requests
  • Loading branch information
lpotter committed Aug 21, 2015
2 parents f19d4f1 + 1a33962 commit 7ca28b1
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
16 changes: 12 additions & 4 deletions src/network/access/qnetworkaccessmanager.cpp
Expand Up @@ -949,6 +949,9 @@ QNetworkAccessManager::NetworkAccessibility QNetworkAccessManager::networkAccess
{
Q_D(const QNetworkAccessManager);

if (d->networkConfiguration.state().testFlag(QNetworkConfiguration::Undefined))
return UnknownAccessibility;

if (d->networkSessionRequired) {
QSharedPointer<QNetworkSession> networkSession(d->getNetworkSession());
if (networkSession) {
Expand All @@ -958,7 +961,6 @@ QNetworkAccessManager::NetworkAccessibility QNetworkAccessManager::networkAccess
else
return NotAccessible;
} else {
// Network accessibility is either disabled or unknown.
if (d->defaultAccessControl) {
if (d->online)
return d->networkAccessible;
Expand Down Expand Up @@ -1129,7 +1131,7 @@ 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://.
if (!d->networkAccessible && !isLocalFile) {
if (d->networkAccessible == NotAccessible && !isLocalFile) {
return new QDisabledNetworkReply(this, req, op);
}

Expand Down Expand Up @@ -1593,6 +1595,7 @@ void QNetworkAccessManagerPrivate::_q_networkSessionStateChanged(QNetworkSession
void QNetworkAccessManagerPrivate::_q_onlineStateChanged(bool isOnline)
{
Q_Q(QNetworkAccessManager);

// if the user set a config, we only care whether this one is active.
// Otherwise, this QNAM is online if there is an online config.

Expand All @@ -1616,10 +1619,15 @@ void QNetworkAccessManagerPrivate::_q_onlineStateChanged(bool isOnline)
emit q->networkAccessibleChanged(networkAccessible);
}
}
} else if (networkConfiguration.state().testFlag(QNetworkConfiguration::Undefined)) {
if (networkAccessible != QNetworkAccessManager::UnknownAccessibility) {
networkAccessible = QNetworkAccessManager::UnknownAccessibility;
emit q->networkAccessibleChanged(networkAccessible);
}
} else {
if (networkAccessible != QNetworkAccessManager::NotAccessible) {
networkAccessible = QNetworkAccessManager::NotAccessible;
emit q->networkAccessibleChanged(networkAccessible);
networkAccessible = QNetworkAccessManager::NotAccessible;
emit q->networkAccessibleChanged(networkAccessible);
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/network/access/qnetworkaccessmanager_p.h
Expand Up @@ -101,6 +101,8 @@ class QNetworkAccessManagerPrivate: public QObjectPrivate
online = (networkConfiguration.state().testFlag(QNetworkConfiguration::Active));
if (online)
networkAccessible = QNetworkAccessManager::Accessible;
else if (networkConfiguration.state().testFlag(QNetworkConfiguration::Undefined))
networkAccessible = QNetworkAccessManager::UnknownAccessibility;
else
networkAccessible = QNetworkAccessManager::NotAccessible;
#endif
Expand Down

0 comments on commit 7ca28b1

Please sign in to comment.