From 55a5420173b6ab10611eb91386b54217b8218ba0 Mon Sep 17 00:00:00 2001 From: Michal Klocek Date: Mon, 29 May 2017 19:04:44 +0200 Subject: Fix ASSERT in URLRequestContextGetterQt due to race condition Setting httpCacheType followed by persistentCookiesPolicy may lead to io thread calling generateHttpCache just before generateCookieStore, which triggers assert in line 344. Recall generateHttpCache in case generateHttpCache was called before generateCookieStore. Task-number: QTBUG-61047 Change-Id: I1cfe5f18a884bd0d76fce4b30da0e22359cab2af Reviewed-by: Allan Sandfeld Jensen --- src/core/url_request_context_getter_qt.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/url_request_context_getter_qt.cpp b/src/core/url_request_context_getter_qt.cpp index 234109f1f..1f3d6fcbe 100644 --- a/src/core/url_request_context_getter_qt.cpp +++ b/src/core/url_request_context_getter_qt.cpp @@ -341,8 +341,7 @@ void URLRequestContextGetterQt::generateCookieStore() cookieMonster->SetCookieableSchemes(cookieableSchemes); m_cookieDelegate->setCookieMonster(cookieMonster); - if (!m_updateAllStorage) { - Q_ASSERT(m_updateHttpCache); + if (!m_updateAllStorage && m_updateHttpCache) { // HttpCache needs to be regenerated when we generate a new channel id service generateHttpCache(); } @@ -470,6 +469,9 @@ void URLRequestContextGetterQt::generateHttpCache() QMutexLocker lock(&m_mutex); m_updateHttpCache = false; + if (m_updateCookieStore) + generateCookieStore(); + net::HttpCache::DefaultBackend* main_backend = 0; switch (m_httpCacheType) { case BrowserContextAdapter::MemoryHttpCache: -- cgit v1.2.3