From f1d4cac31c2bc8e429912a497b8405bb287e12fd Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Fri, 29 Jun 2012 22:40:36 +0200 Subject: Get sure we are no more serving requests when deleting page. CCBUG: 282052 --- src/networkaccessmanager.cpp | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/networkaccessmanager.cpp') diff --git a/src/networkaccessmanager.cpp b/src/networkaccessmanager.cpp index 99233aa1..3291b6db 100644 --- a/src/networkaccessmanager.cpp +++ b/src/networkaccessmanager.cpp @@ -39,6 +39,36 @@ #include #include +// Qt Includes +#include +#include + + +class NullNetworkReply : public QNetworkReply +{ +public: + NullNetworkReply(const QNetworkRequest &req, QObject* parent = 0) + :QNetworkReply(parent) + { + setRequest(req); + setUrl(req.url()); + setHeader(QNetworkRequest::ContentLengthHeader, 0); + setHeader(QNetworkRequest::ContentTypeHeader, "text/plain"); + setError(QNetworkReply::ContentAccessDenied, i18n("Null reply")); + setAttribute(QNetworkRequest::User, QNetworkReply::ContentAccessDenied); + QTimer::singleShot(0, this, SIGNAL(finished())); + } + + virtual void abort() {} + virtual qint64 bytesAvailable() const { return 0; } + +protected: + virtual qint64 readData(char*, qint64) {return -1;} +}; + + +// ---------------------------------------------------------------------------------------------- + NetworkAccessManager::NetworkAccessManager(QObject *parent) : AccessManager(parent) @@ -60,6 +90,10 @@ QNetworkReply *NetworkAccessManager::createRequest(QNetworkAccessManager::Operat { WebPage *parentPage = qobject_cast(parent()); + // NOTE: This to get sure we are NOT serving unused requests + if (!parentPage) + return new NullNetworkReply(request, this); + QNetworkReply *reply = 0; // set our "nice" accept-language header... @@ -73,7 +107,7 @@ QNetworkReply *NetworkAccessManager::createRequest(QNetworkAccessManager::Operat if (!reply) reply = AccessManager::createRequest(op, req, outgoingData); - if (parentPage && parentPage->hasNetworkAnalyzerEnabled()) + if (parentPage->hasNetworkAnalyzerEnabled()) emit networkData(op, req, reply); return reply; -- cgit v1.2.1