From 46c58502639c25e5d19dd84d913b1208d5051db5 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Wed, 7 Mar 2012 13:08:02 +0100 Subject: [PATCH] Call wait() after calling quit() so that it can gracefully finish There was a problem with slow https connections that if the download was ongoing when quit() was called then it tended to cause a crash because it tries to shutdown the SSL connection. Task-number: QTBUG-24594 Change-Id: I6b161bc7a9bb99e41849537462de2d7c92661902 Reviewed-by: Shane Kearns Reviewed-by: Martin Petersson --- src/network/access/qnetworkaccessmanager.cpp | 2 ++ src/network/access/qnetworkreplyhttpimpl.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index c65edb66730..397bb0535e4 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -1185,6 +1185,7 @@ void QNetworkAccessManagerPrivate::clearCache(QNetworkAccessManager *manager) if (manager->d_func()->httpThread) { // The thread will deleteLater() itself from its finished() signal manager->d_func()->httpThread->quit(); + manager->d_func()->httpThread->wait(5000); manager->d_func()->httpThread = 0; } } @@ -1194,6 +1195,7 @@ QNetworkAccessManagerPrivate::~QNetworkAccessManagerPrivate() if (httpThread) { // The thread will deleteLater() itself from its finished() signal httpThread->quit(); + httpThread->wait(5000); httpThread = 0; } } diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp index 1f456746ae5..a914ee3f04d 100644 --- a/src/network/access/qnetworkreplyhttpimpl.cpp +++ b/src/network/access/qnetworkreplyhttpimpl.cpp @@ -904,6 +904,7 @@ void QNetworkReplyHttpImplPrivate::postRequest() // End the thread. It will delete itself from the finished() signal thread->quit(); + thread->wait(5000); finished(); } else {