summaryrefslogtreecommitdiff
path: root/src/network/access/qnetworkreplywasmimpl.cpp
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@gmail.com>2020-05-07 19:14:36 +1000
committerLorn Potter <lorn.potter@gmail.com>2020-06-12 09:48:17 +1000
commit3ef5bc06fab6473f5b2d3e430a79ec8d836c6df8 (patch)
tree74edecea6980a9a25f84e2ef01974bc71b24f3e3 /src/network/access/qnetworkreplywasmimpl.cpp
parenta9f82b8b2c19ecc5bf5ab0d376780c34e8435202 (diff)
downloadqtbase-3ef5bc06fab6473f5b2d3e430a79ec8d836c6df8.tar.gz
wasm: set status codes from network operation
Fixes: QTBUG-83991 Change-Id: Ie1e88189bee8b6a9dc6cb2a721777a5e1032307a Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> (cherry picked from commit 3fbf7b34cc2242559a047c3868855c9de6f0c3d3)
Diffstat (limited to 'src/network/access/qnetworkreplywasmimpl.cpp')
-rw-r--r--src/network/access/qnetworkreplywasmimpl.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/network/access/qnetworkreplywasmimpl.cpp b/src/network/access/qnetworkreplywasmimpl.cpp
index e9f9928470..83254889fb 100644
--- a/src/network/access/qnetworkreplywasmimpl.cpp
+++ b/src/network/access/qnetworkreplywasmimpl.cpp
@@ -462,6 +462,13 @@ void QNetworkReplyWasmImplPrivate::downloadSucceeded(emscripten_fetch_t *fetch)
}
}
+void QNetworkReplyWasmImplPrivate::setStatusCode(int status, const QByteArray &statusText)
+{
+ Q_Q(QNetworkReplyWasmImpl);
+ q->setAttribute(QNetworkRequest::HttpStatusCodeAttribute, status);
+ q->setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, statusText);
+}
+
void QNetworkReplyWasmImplPrivate::stateChange(emscripten_fetch_t *fetch)
{
if (fetch->readyState == /*HEADERS_RECEIVED*/ 2) {
@@ -498,8 +505,14 @@ void QNetworkReplyWasmImplPrivate::downloadFailed(emscripten_fetch_t *fetch)
reasonStr = QStringLiteral("Operation canceled");
else
reasonStr = QString::fromUtf8(fetch->statusText);
+
+ QByteArray statusText(fetch->statusText);
+ reply->setStatusCode(fetch->status, statusText);
reply->emitReplyError(reply->statusCodeFromHttp(fetch->status, reply->request.url()), reasonStr);
}
+
+ if (fetch->status >= 400)
+ emscripten_fetch_close(fetch); // Also free data on failure.
}
//taken from qhttpthreaddelegate.cpp