diff options
author | Rohan McGovern <rohan.mcgovern@nokia.com> | 2010-02-01 05:53:18 (GMT) |
---|---|---|
committer | Rohan McGovern <rohan.mcgovern@nokia.com> | 2010-02-01 05:53:18 (GMT) |
commit | 4915439de467d1119a46af66ea08dbe161d2f336 (patch) | |
tree | 450a989691b5a892b07d5edbe5cf88ba78d388a0 /src/network/access/qnetworkreplyimpl.cpp | |
parent | 5bda4e27bbe3fde98bd5c628fada76dfccadad0e (diff) | |
parent | 4d1c8407c1ac16b6288c3aa0f7c2118d2748f348 (diff) | |
download | Qt-4915439de467d1119a46af66ea08dbe161d2f336.zip Qt-4915439de467d1119a46af66ea08dbe161d2f336.tar.gz Qt-4915439de467d1119a46af66ea08dbe161d2f336.tar.bz2 |
Merge commit 'origin/4.6' into oslo1-master
Conflicts:
doc/src/deployment/deployment.qdoc
doc/src/getting-started/installation.qdoc
examples/assistant/simpletextviewer/findfiledialog.cpp
examples/assistant/simpletextviewer/findfiledialog.h
examples/assistant/simpletextviewer/mainwindow.cpp
examples/webkit/fancybrowser/main.cpp
src/corelib/global/qglobal.h
src/gui/dialogs/qfiledialog_win.cpp
src/plugins/qpluginbase.pri
src/qbase.pri
tests/auto/selftests/expected_cmptest.txt
tests/auto/selftests/expected_crashes_3.txt
tests/auto/selftests/expected_longstring.txt
tests/auto/selftests/expected_maxwarnings.txt
tests/auto/selftests/expected_skip.txt
tools/assistant/compat/config.cpp
tools/assistant/compat/config.h
tools/assistant/compat/docuparser.cpp
tools/assistant/compat/docuparser.h
tools/assistant/compat/fontsettingsdialog.cpp
tools/assistant/compat/helpdialog.cpp
tools/assistant/compat/helpdialog.h
tools/assistant/compat/helpdialog.ui
tools/assistant/compat/helpwindow.cpp
tools/assistant/compat/helpwindow.h
tools/assistant/compat/index.cpp
tools/assistant/compat/index.h
tools/assistant/compat/lib/qassistantclient.cpp
tools/assistant/compat/lib/qassistantclient.h
tools/assistant/compat/main.cpp
tools/assistant/compat/mainwindow.cpp
tools/assistant/compat/mainwindow.h
tools/assistant/compat/mainwindow.ui
tools/assistant/compat/profile.cpp
tools/assistant/compat/profile.h
tools/assistant/compat/tabbedbrowser.cpp
tools/assistant/compat/tabbedbrowser.h
tools/assistant/compat/tabbedbrowser.ui
tools/assistant/compat/topicchooser.cpp
tools/assistant/compat/topicchooser.ui
tools/assistant/lib/qhelpsearchquerywidget.cpp
tools/assistant/tools/assistant/centralwidget.cpp
tools/assistant/tools/assistant/doc/assistant.qdocconf
tools/assistant/tools/assistant/helpviewer.cpp
tools/linguist/lupdate/main.cpp
tools/qdoc3/test/assistant.qdocconf
tools/qdoc3/test/designer.qdocconf
tools/qdoc3/test/linguist.qdocconf
tools/qdoc3/test/qmake.qdocconf
tools/qdoc3/test/qt-build-docs.qdocconf
tools/qdoc3/test/qt.qdocconf
Diffstat (limited to 'src/network/access/qnetworkreplyimpl.cpp')
-rw-r--r-- | src/network/access/qnetworkreplyimpl.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp index c20812e..59c7d76 100644 --- a/src/network/access/qnetworkreplyimpl.cpp +++ b/src/network/access/qnetworkreplyimpl.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** @@ -72,6 +72,9 @@ void QNetworkReplyImplPrivate::_q_startOperation() } state = Working; + // note: if that method is called directly, it cannot happen that the backend is 0, + // because we just checked via a qobject_cast that we got a http backend (see + // QNetworkReplyImplPrivate::setup()) if (!backend) { error(QNetworkReplyImpl::ProtocolUnknownError, QCoreApplication::translate("QNetworkReply", "Protocol \"%1\" is unknown").arg(url.scheme())); // not really true!; @@ -203,7 +206,6 @@ void QNetworkReplyImplPrivate::_q_bufferOutgoingData() } } - void QNetworkReplyImplPrivate::setup(QNetworkAccessManager::Operation op, const QNetworkRequest &req, QIODevice *data) { @@ -246,7 +248,14 @@ void QNetworkReplyImplPrivate::setup(QNetworkAccessManager::Operation op, const // No outgoing data (e.g. HTTP GET request) // or no backend // if no backend, _q_startOperation will handle the error of this - QMetaObject::invokeMethod(q, "_q_startOperation", Qt::QueuedConnection); + + // for HTTP, we want to send out the request as fast as possible to the network, without + // invoking methods in a QueuedConnection + if (qobject_cast<QNetworkAccessHttpBackend *>(backend)) { + _q_startOperation(); + } else { + QMetaObject::invokeMethod(q, "_q_startOperation", Qt::QueuedConnection); + } } q->QIODevice::open(QIODevice::ReadOnly); @@ -273,7 +282,7 @@ void QNetworkReplyImplPrivate::handleNotifications() if (state != Working) return; - while (!current.isEmpty()) { + while (state == Working && !current.isEmpty()) { InternalNotifications notification = current.dequeue(); switch (notification) { case NotifyDownstreamReadyWrite: @@ -580,7 +589,7 @@ QNetworkReplyImpl::~QNetworkReplyImpl() void QNetworkReplyImpl::abort() { Q_D(QNetworkReplyImpl); - if (d->state == QNetworkReplyImplPrivate::Aborted) + if (d->state == QNetworkReplyImplPrivate::Finished || d->state == QNetworkReplyImplPrivate::Aborted) return; // stop both upload and download @@ -643,6 +652,9 @@ void QNetworkReplyImpl::setReadBufferSize(qint64 size) d->backendNotify(QNetworkReplyImplPrivate::NotifyDownstreamReadyWrite); QNetworkReply::setReadBufferSize(size); + + if (d->backend) + d->backend->setDownstreamLimited(d->readBufferMaxSize > 0); } #ifndef QT_NO_OPENSSL |