diff options
Diffstat (limited to 'src/network/access')
-rw-r--r-- | src/network/access/qnetworkreplywasmimpl.cpp | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/src/network/access/qnetworkreplywasmimpl.cpp b/src/network/access/qnetworkreplywasmimpl.cpp index 505db44522..2ee57a0860 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) |