summaryrefslogtreecommitdiff
path: root/src/network/access/qnetworkreplywasmimpl.cpp
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@gmail.com>2021-11-05 10:59:27 +1000
committerLorn Potter <lorn.potter@gmail.com>2021-11-09 08:34:02 +1000
commitf5c09195e7e4248a84154724f6a885b422bdb392 (patch)
tree31f6fe4f14cee2a66cb1da348cdad63a0762d362 /src/network/access/qnetworkreplywasmimpl.cpp
parente20a5ea8d341c185d9e7947211bd500f975d43f5 (diff)
downloadqtbase-f5c09195e7e4248a84154724f6a885b422bdb392.tar.gz
wasm: fix network reply status attribute
We were emitting the finished signal before the status code attributes were being set. Fixes: QTBUG-97984 Change-Id: Ib179898dee2b9667d482348ad12180e8bdef74db Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> (cherry picked from commit 663a17589301225a40d8e56cb1e90886afcb00c3)
Diffstat (limited to 'src/network/access/qnetworkreplywasmimpl.cpp')
-rw-r--r--src/network/access/qnetworkreplywasmimpl.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/network/access/qnetworkreplywasmimpl.cpp b/src/network/access/qnetworkreplywasmimpl.cpp
index 7f7e8e1af5..490e2fd8a2 100644
--- a/src/network/access/qnetworkreplywasmimpl.cpp
+++ b/src/network/access/qnetworkreplywasmimpl.cpp
@@ -308,12 +308,6 @@ void QNetworkReplyWasmImplPrivate::dataReceived(const QByteArray &buffer, int bu
downloadBuffer.append(buffer, bufferSize);
emit q->readyRead();
-
- if (downloadBufferCurrentSize == totalDownloadSize) {
- q->setFinished(true);
- emit q->readChannelFinished();
- emit q->finished();
- }
}
//taken from qnetworkrequest.cpp
@@ -446,13 +440,25 @@ void QNetworkReplyWasmImplPrivate::_q_bufferOutgoingData()
void QNetworkReplyWasmImplPrivate::downloadSucceeded(emscripten_fetch_t *fetch)
{
auto reply = reinterpret_cast<QNetworkReplyWasmImplPrivate*>(fetch->userData);
- if (!reply || reply->state == QNetworkReplyPrivate::Aborted)
- return;
- QByteArray buffer(fetch->data, fetch->numBytes);
- reply->dataReceived(buffer, buffer.size());
-
+ if (reply) {
+ if (reply->state != QNetworkReplyPrivate::Aborted) {
+ QByteArray buffer(fetch->data, fetch->numBytes);
+ reply->dataReceived(buffer, buffer.size());
+ QByteArray statusText(fetch->statusText);
+ reply->setStatusCode(fetch->status, statusText);
+ reply->setReplyFinished();
+ }
+ reply->m_fetch = nullptr;
+ }
emscripten_fetch_close(fetch);
- reply->m_fetch = nullptr;
+}
+
+void QNetworkReplyWasmImplPrivate::setReplyFinished()
+{
+ Q_Q(QNetworkReplyWasmImpl);
+ q->setFinished(true);
+ emit q->readChannelFinished();
+ emit q->finished();
}
void QNetworkReplyWasmImplPrivate::setStatusCode(int status, const QByteArray &statusText)