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
Change-Id: I46d8624e323fca0932411c575922415d9f9d7986
Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
(cherry picked from commit 655b98482e8339b287fb040fd25013dc1232a43d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Piotr Wierciński 2024-04-05 15:39:43 +02:00 committed by Qt Cherry-pick Bot
parent 5519bf0cf9
commit d40f29353e

View File

@ -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,6 +134,7 @@ void QNetworkReplyWasmImpl::abort()
void QNetworkReplyWasmImplPrivate::setCanceled()
{
Q_Q(QNetworkReplyWasmImpl);
if (m_fetch)
m_fetch->userData = nullptr;
emitReplyError(QNetworkReply::OperationCanceledError, QStringLiteral("Operation canceled"));
@ -489,6 +493,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();