diff options
author | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2021-08-12 15:25:25 +0300 |
---|---|---|
committer | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2021-08-16 10:11:33 +0300 |
commit | f4d1e57345c6c0a052828c1801281012a58a1cef (patch) | |
tree | 1856d06bee43ae5ed71ed00ce06f17f5f33a90bb | |
parent | 2b53c4767b7f6378fa1bb855339f207f6a13c39e (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.cpp | 2 |
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(); |