summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-12-20 17:58:41 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-12-20 17:58:41 (GMT)
commitecc25948e717c0dea3cd11919a1fda231e49b4ad (patch)
treeac797c3b5d9a1db1a3148e3d81729766a58ae699
parent987a683ff51997cb23cb931af99c6554651742d7 (diff)
parentd9dbdb1afde441c8ab87f42b4a5e0e29ad54480c (diff)
downloadQt-ecc25948e717c0dea3cd11919a1fda231e49b4ad.zip
Qt-ecc25948e717c0dea3cd11919a1fda231e49b4ad.tar.gz
Qt-ecc25948e717c0dea3cd11919a1fda231e49b4ad.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: Fixed QStatusBar not to repaint itself too early QNAM HTTP: Fix missing error() signal Make it clear which security updates are needed for Visual Studio 2005.
-rw-r--r--doc/src/getting-started/installation.qdoc1
-rw-r--r--src/gui/widgets/qstatusbar.cpp2
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp20
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel_p.h1
4 files changed, 22 insertions, 2 deletions
diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
index a68310c..5b009cd 100644
--- a/doc/src/getting-started/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -963,6 +963,7 @@ We hope you will enjoy using Qt.
first install the Visual Studio Service Pack 1 available
\l{http://www.microsoft.com/downloads/details.aspx?FamilyId=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&amp;displaylang=en}{here}
to avoid runtime conflicts.
+ Additionally, you must use the Check for Updates feature in the Help menu of the Visual Studio 2005 IDE to apply at least the following security updates: KB937061, KB971023, KB971090, KB973673.
If you are using a source edition of Qt, you must first install Perl so
that the syncqt script invoked by configure can be executed. You can download
diff --git a/src/gui/widgets/qstatusbar.cpp b/src/gui/widgets/qstatusbar.cpp
index c88d2a1..c60913e 100644
--- a/src/gui/widgets/qstatusbar.cpp
+++ b/src/gui/widgets/qstatusbar.cpp
@@ -575,7 +575,7 @@ void QStatusBar::reformat()
d->savedStrut = maxH;
vbox->addSpacing(2);
d->box->activate();
- repaint();
+ update();
}
/*!
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index c8caad4..c4471eb 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -66,6 +66,7 @@ QHttpNetworkConnectionChannel::QHttpNetworkConnectionChannel()
, bytesTotal(0)
, resendCurrent(false)
, lastStatus(0)
+ , unhandledError(QNetworkReply::NoError)
, pendingEncrypt(false)
, reconnectAttempts(2)
, authMethod(QAuthenticatorPrivate::None)
@@ -642,7 +643,23 @@ void QHttpNetworkConnectionChannel::allDone()
// slot connected to it. The socket will not fire readyRead signal, if we are already
// in the slot connected to readyRead
if (emitFinished)
- QMetaObject::invokeMethod(reply, "finished", Qt::QueuedConnection);
+ {
+ // Check whether _q_error was invoked previously and if it left a socket
+ // error unhandled AND that there are no http errors.
+ // In case there are both socket errors and http errors, the socket error is suppressed.
+ // Http errors are handled in the QNetworkAccessHttpBackend.
+ if(unhandledError != QNetworkReply::NoError && reply->statusCode() == 200) {
+ QString errorString = connection->d_func()->errorDetail(unhandledError, socket, socket->errorString());
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QMetaObject::invokeMethod(reply, "finishedWithError",
+ Qt::QueuedConnection,
+ Q_ARG(QNetworkReply::NetworkError, unhandledError),
+ Q_ARG(QString, errorString));
+ } else {
+ QMetaObject::invokeMethod(reply, "finished", Qt::QueuedConnection);
+ }
+ unhandledError = QNetworkReply::NoError; // Reset the value
+ }
// reset the reconnection attempts after we receive a complete reply.
// in case of failures, each channel will attempt two reconnects before emitting error.
reconnectAttempts = 2;
@@ -964,6 +981,7 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
errorCode = QNetworkReply::RemoteHostClosedError;
}
} else {
+ unhandledError = QNetworkReply::RemoteHostClosedError;
return;
}
break;
diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h
index fd18042..e1d42fb 100644
--- a/src/network/access/qhttpnetworkconnectionchannel_p.h
+++ b/src/network/access/qhttpnetworkconnectionchannel_p.h
@@ -105,6 +105,7 @@ public:
qint64 bytesTotal;
bool resendCurrent;
int lastStatus; // last status received on this channel
+ QNetworkReply::NetworkError unhandledError; // Stored code of an unhandled error.
bool pendingEncrypt; // for https (send after encrypted)
int reconnectAttempts; // maximum 2 reconnection attempts
QAuthenticatorPrivate::Method authMethod;