diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-04-15 09:09:23 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-04-15 09:09:24 +0200 |
commit | 605617b5dce6ccd8826d07aabe2db781ae3aa9b4 (patch) | |
tree | 9b014020fce4f53e92442c6914e5bc6f6264e879 /src/network | |
parent | d370878aa0510e1e51eb9014965f505e395f3f81 (diff) | |
parent | d238f7e0190c49c0f07c24f2f4ef9a50577c389b (diff) |
Merge remote-tracking branch 'origin/5.4' into 5.5
Change-Id: I004854a25ebbf12b1fda88900162fe7878716c58
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/access/qnetworkreplynsurlconnectionimpl.mm | 13 | ||||
-rw-r--r-- | src/network/bearer/qnetworkconfigmanager_p.cpp | 4 | ||||
-rw-r--r-- | src/network/ssl/qsslsocket.cpp | 2 | ||||
-rw-r--r-- | src/network/ssl/qsslsocket_openssl.cpp | 2 |
4 files changed, 11 insertions, 10 deletions
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(); } |