summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/network/access/qnetworkaccesshttpbackend.cpp4
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp5
2 files changed, 9 insertions, 0 deletions
diff --git a/src/network/access/qnetworkaccesshttpbackend.cpp b/src/network/access/qnetworkaccesshttpbackend.cpp
index ce800c240b..c57157ef69 100644
--- a/src/network/access/qnetworkaccesshttpbackend.cpp
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp
@@ -628,6 +628,10 @@ void QNetworkAccessHttpBackend::closeUpstreamChannel()
{
// this indicates that the user finished uploading the data for POST
Q_ASSERT(uploadDevice);
+
+ if (uploadDevice->eof)
+ return; // received a 2nd time. should fix 257662 and 256369
+
uploadDevice->eof = true;
emit uploadDevice->readChannelFinished();
}
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp
index 63a9c2de75..98944fd74b 100644
--- a/src/network/access/qnetworkreplyimpl.cpp
+++ b/src/network/access/qnetworkreplyimpl.cpp
@@ -92,6 +92,9 @@ void QNetworkReplyImplPrivate::_q_startOperation()
void QNetworkReplyImplPrivate::_q_sourceReadyRead()
{
+ if (state != Working)
+ return;
+
// read data from the outgoingData QIODevice into our internal buffer
enum { DesiredBufferSize = 32 * 1024 };
@@ -131,6 +134,8 @@ void QNetworkReplyImplPrivate::_q_sourceReadChannelFinished()
void QNetworkReplyImplPrivate::_q_copyReadyRead()
{
Q_Q(QNetworkReplyImpl);
+ if (state != Working)
+ return;
if (!copyDevice || !q->isOpen())
return;