summaryrefslogtreecommitdiff
path: root/src/networkaccessmanager.cpp
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2012-06-29 22:40:36 +0200
committerAndrea Diamantini <adjam7@gmail.com>2012-06-29 23:29:58 +0200
commitf1d4cac31c2bc8e429912a497b8405bb287e12fd (patch)
treedd0efeb2a73b23b2b0868802ad27a82e7ffb6eb0 /src/networkaccessmanager.cpp
parentSVN_SILENT made messages (.desktop file) (diff)
downloadrekonq-f1d4cac31c2bc8e429912a497b8405bb287e12fd.tar.xz
Get sure we are no more serving requests when deleting page.
CCBUG: 282052
Diffstat (limited to 'src/networkaccessmanager.cpp')
-rw-r--r--src/networkaccessmanager.cpp36
1 files changed, 35 insertions, 1 deletions
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 <KLocale>
#include <KProtocolManager>
+// Qt Includes
+#include <QNetworkReply>
+#include <QTimer>
+
+
+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<WebPage *>(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;