summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2021-08-12 15:25:25 +0300
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2021-08-16 10:11:33 +0300
commitf4d1e57345c6c0a052828c1801281012a58a1cef (patch)
tree1856d06bee43ae5ed71ed00ce06f17f5f33a90bb
parent2b53c4767b7f6378fa1bb855339f207f6a13c39e (diff)
Fix hang when canceling metadatajob by an external call
Installer may leave an event loop running in DownloadFileTask::doTask when shutting down, if Downloader::testCanceled() was not yet triggered by connection events, or by a timer timeout used to check if the user has canceled download while the connection is blocked. Fix by waiting for the tasks to finish when canceled. Task-number: QTIFW-2282 Change-Id: I8800cdb3c368da3edaf8def50e3b8e837d3e993c Reviewed-by: Katja Marttila <katja.marttila@qt.io>
-rw-r--r--src/libs/installer/metadatajob.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libs/installer/metadatajob.cpp b/src/libs/installer/metadatajob.cpp
index 2a9cb5ae7..7a6866dc2 100644
--- a/src/libs/installer/metadatajob.cpp
+++ b/src/libs/installer/metadatajob.cpp
@@ -545,7 +545,9 @@ void MetadataJob::reset()
try {
m_xmlTask.cancel();
+ m_xmlTask.waitForFinished();
m_metadataTask.cancel();
+ m_metadataTask.waitForFinished();
} catch (...) {}
m_tempDirDeleter.releaseAndDeleteAll();
m_metadataResult.clear();