summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikhail Korobov <kmike84@gmail.com>2015-08-18 03:20:21 +0500
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-08-26 09:21:17 +0000
commit4a631c3a6e52ae53a2bad45e185cd51927d94bff (patch)
treeb9572eb0c5c4016dfe92347ffcbf01bdcdf5a0c9
parentc117978bb8781134f74dfd0313c00476d3df6364 (diff)
Fix QNetworkReply::abort and QNetworkReply::close
Don't read from closed QNetworkReply instances. This fixes QWebView hangs on some of the web sites when reply->abort() or reply->close() is called. [ChangeLog][QtWebKit] fixed reply->abort() and reply->close() handling. Change-Id: I8d46ad115954369b9de0b5a74b118fc3bf2f1092 Task-number: QTBUG-47654 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
-rw-r--r--Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp4
-rw-r--r--Source/WebCore/platform/network/qt/QtMIMETypeSniffer.cpp4
2 files changed, 8 insertions, 0 deletions
diff --git a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
index e24d0b1c8..e07bc76a9 100644
--- a/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
+++ b/Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
@@ -683,6 +683,10 @@ void QNetworkReplyHandler::forwardData()
{
ASSERT(m_replyWrapper && m_replyWrapper->reply() && !wasAborted() && !m_replyWrapper->wasRedirected());
+ // reply may be closed if reply->close() or reply->abort() is called
+ if (!m_replyWrapper->reply()->isReadable())
+ return;
+
ResourceHandleClient* client = m_resourceHandle->client();
if (!client)
return;
diff --git a/Source/WebCore/platform/network/qt/QtMIMETypeSniffer.cpp b/Source/WebCore/platform/network/qt/QtMIMETypeSniffer.cpp
index 60ab727ce..bd119a8e1 100644
--- a/Source/WebCore/platform/network/qt/QtMIMETypeSniffer.cpp
+++ b/Source/WebCore/platform/network/qt/QtMIMETypeSniffer.cpp
@@ -41,6 +41,10 @@ QtMIMETypeSniffer::QtMIMETypeSniffer(QNetworkReply* reply, const QString& advert
bool QtMIMETypeSniffer::sniff()
{
+ // reply may be closed if reply->close() or reply->abort() is called
+ if (!m_reply->isReadable())
+ return true;
+
// See QNetworkReplyWrapper::setFinished().
const bool isReplyFinished = m_reply->property("_q_isFinished").toBool();