summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorPiotr Wierciński <piotr.wiercinski@qt.io>2024-04-05 15:39:43 +0200
committerPiotr Wierciński <piotr.wiercinski@qt.io>2024-04-16 11:16:17 +0000
commit655b98482e8339b287fb040fd25013dc1232a43d (patch)
tree7a30ac879f55033a3a5e63bd91d61380abab3afd /src/network
parent7bff20c9f5d1f6c8bde18f0cfd9c5231d7792ef7 (diff)
wasm: Abort network request on destruction of QNetworkReply
Deleting QNetworkReply is a common way to cancel pending request. Wasm implementation was not treating it properly. Task-number: QTBUG-124111 Pick-to: 6.7 Change-Id: I46d8624e323fca0932411c575922415d9f9d7986 Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
Diffstat (limited to 'src/network')
-rw-r--r--src/network/access/qnetworkreplywasmimpl.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/network/access/qnetworkreplywasmimpl.cpp b/src/network/access/qnetworkreplywasmimpl.cpp
index 2e3382f432..c02f0b4e61 100644
--- a/src/network/access/qnetworkreplywasmimpl.cpp
+++ b/src/network/access/qnetworkreplywasmimpl.cpp
@@ -62,7 +62,7 @@ QNetworkReplyWasmImplPrivate::QNetworkReplyWasmImplPrivate()
, downloadBufferCurrentSize(0)
, totalDownloadSize(0)
, percentFinished(0)
- , m_fetch(0)
+ , m_fetch(nullptr)
{
}
@@ -79,6 +79,9 @@ QNetworkReplyWasmImpl::QNetworkReplyWasmImpl(QObject *parent)
QNetworkReplyWasmImpl::~QNetworkReplyWasmImpl()
{
+ if (isRunning())
+ abort();
+ close();
}
QByteArray QNetworkReplyWasmImpl::methodName() const
@@ -131,7 +134,8 @@ void QNetworkReplyWasmImpl::abort()
void QNetworkReplyWasmImplPrivate::setCanceled()
{
Q_Q(QNetworkReplyWasmImpl);
- m_fetch->userData = nullptr;
+ if (m_fetch)
+ m_fetch->userData = nullptr;
emitReplyError(QNetworkReply::OperationCanceledError, QStringLiteral("Operation canceled"));
q->setFinished(true);
@@ -490,6 +494,7 @@ void QNetworkReplyWasmImplPrivate::downloadSucceeded(emscripten_fetch_t *fetch)
void QNetworkReplyWasmImplPrivate::setReplyFinished()
{
Q_Q(QNetworkReplyWasmImpl);
+ state = QNetworkReplyPrivate::Finished;
q->setFinished(true);
emit q->readChannelFinished();
emit q->finished();