summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-04-22 09:04:29 +0200
committerLiang Qi <liang.qi@theqtcompany.com>2015-04-22 09:25:54 +0200
commitaed5a7168354c6ae47687d20b4bd3f0adcc14f8e (patch)
treed2060479a7c12fdba8c1955e5d363754feffabb8 /src/network
parentd3d10cf23d61f4a011f1a7e9abdee1a92717e80f (diff)
parent628fa13ea4d6ff0e2e2ee76c9adfc78676de3c59 (diff)
Merge remote-tracking branch 'origin/5.5' into dev
Conflicts: src/corelib/statemachine/qstatemachine.cpp src/corelib/statemachine/qstatemachine_p.h src/gui/painting/qdrawhelper.cpp src/plugins/platforms/xcb/qxcbnativeinterface.cpp src/plugins/platforms/xcb/qxcbwindow.cpp src/plugins/platforms/xcb/qxcbwindow.h src/testlib/qtestblacklist.cpp src/tools/qdoc/node.cpp src/tools/qdoc/node.h tests/auto/gui/painting/qcolor/tst_qcolor.cpp Change-Id: I6c78b7b162001712d5774293f501b06b4ff32684
Diffstat (limited to 'src/network')
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp3
-rw-r--r--src/network/access/qnetworkreplynsurlconnectionimpl.mm13
-rw-r--r--src/network/bearer/qnetworkconfigmanager_p.cpp4
-rw-r--r--src/network/ssl/qsslsocket.cpp2
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp2
5 files changed, 13 insertions, 11 deletions
diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp
index 445b2c9743..321352e045 100644
--- a/src/network/access/qnetworkaccessbackend.cpp
+++ b/src/network/access/qnetworkaccessbackend.cpp
@@ -382,7 +382,8 @@ bool QNetworkAccessBackend::start()
const QString host = reply->url.host();
if (host == QLatin1String("localhost") ||
- QHostAddress(host).isLoopback()) {
+ QHostAddress(host).isLoopback() ||
+ reply->url.isLocalFile()) {
// Don't need an open session for localhost access.
} else {
// need to wait for session to be opened
diff --git a/src/network/access/qnetworkreplynsurlconnectionimpl.mm b/src/network/access/qnetworkreplynsurlconnectionimpl.mm
index 2c9ef0ac56..f4f494560c 100644
--- a/src/network/access/qnetworkreplynsurlconnectionimpl.mm
+++ b/src/network/access/qnetworkreplynsurlconnectionimpl.mm
@@ -287,7 +287,7 @@ void QNetworkReplyNSURLConnectionImpl::readyReadOutgoingData()
if ([response expectedContentLength] != NSURLResponseUnknownLength) {
QMetaObject::invokeMethod(replyprivate->q_func(), "downloadProgress", Qt::QueuedConnection,
- Q_ARG(qint64, qint64([responseData length])),
+ Q_ARG(qint64, qint64([responseData length] + replyprivate->bytesRead)),
Q_ARG(qint64, qint64([response expectedContentLength])));
}
@@ -418,9 +418,7 @@ qint64 QNetworkReplyNSURLConnectionImpl::bytesAvailable() const
{
Q_D(const QNetworkReplyNSURLConnectionImpl);
qint64 available = QNetworkReply::bytesAvailable() +
- [[d->urlConnectionDelegate responseData] length] -
- d->bytesRead;
-
+ [[d->urlConnectionDelegate responseData] length];
return available;
}
@@ -432,7 +430,7 @@ bool QNetworkReplyNSURLConnectionImpl::isSequential() const
qint64 QNetworkReplyNSURLConnectionImpl::size() const
{
Q_D(const QNetworkReplyNSURLConnectionImpl);
- return [[d->urlConnectionDelegate responseData] length];
+ return [[d->urlConnectionDelegate responseData] length] + d->bytesRead;
}
/*!
@@ -442,9 +440,10 @@ qint64 QNetworkReplyNSURLConnectionImpl::readData(char *data, qint64 maxlen)
{
Q_D(QNetworkReplyNSURLConnectionImpl);
qint64 dataSize = [[d->urlConnectionDelegate responseData] length];
- qint64 canRead = qMin(maxlen, dataSize - d->bytesRead);
+ qint64 canRead = qMin(maxlen, dataSize);
const char *sourceBase = static_cast<const char *>([[d->urlConnectionDelegate responseData] bytes]);
- memcpy(data, sourceBase + d->bytesRead, canRead);
+ memcpy(data, sourceBase, canRead);
+ [[d->urlConnectionDelegate responseData] replaceBytesInRange:NSMakeRange(0, canRead) withBytes:NULL length:0];
d->bytesRead += canRead;
return canRead;
}
diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp
index 3e9d81da5d..33d42370b7 100644
--- a/src/network/bearer/qnetworkconfigmanager_p.cpp
+++ b/src/network/bearer/qnetworkconfigmanager_p.cpp
@@ -276,7 +276,9 @@ bool QNetworkConfigurationManagerPrivate::isOnline() const
{
QMutexLocker locker(&mutex);
- return !onlineConfigurations.isEmpty();
+ // We need allConfigurations since onlineConfigurations is filled with queued connections
+ // and thus is not always (more importantly just after creation) up to date
+ return !allConfigurations(QNetworkConfiguration::Active).isEmpty();
}
QNetworkConfigurationManager::Capabilities QNetworkConfigurationManagerPrivate::capabilities() const
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp
index ea21f1c5ad..513cc51620 100644
--- a/src/network/ssl/qsslsocket.cpp
+++ b/src/network/ssl/qsslsocket.cpp
@@ -790,7 +790,7 @@ void QSslSocket::close()
qCDebug(lcSsl) << "QSslSocket::close()";
#endif
Q_D(QSslSocket);
- if (encryptedBytesToWrite())
+ if (encryptedBytesToWrite() || !d->writeBuffer.isEmpty())
flush();
if (d->plainSocket)
d->plainSocket->close();
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index 4d092a8109..954c11d1f0 100644
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -1392,7 +1392,7 @@ void QSslSocketBackendPrivate::_q_caRootLoaded(QSslCertificate cert, QSslCertifi
if (plainSocket)
plainSocket->resume();
paused = false;
- if (checkSslErrors())
+ if (checkSslErrors() && ssl)
continueHandshake();
}