Skip to content
This repository has been archived by the owner on Jan 2, 2023. It is now read-only.

Fix bug #4460 #5031

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
35 changes: 33 additions & 2 deletions src/lib/multipageloader.cc
Expand Up @@ -71,6 +71,38 @@ void MyNetworkAccessManager::allow(QString path) {
allowed.insert(x);
}

class networkDeniedReply: public QNetworkReply {
ashkulz marked this conversation as resolved.
Show resolved Hide resolved
Q_OBJECT

public:
networkDeniedReply(const QNetworkRequest & req) {
ashkulz marked this conversation as resolved.
Show resolved Hide resolved
setRequest(req);
setOperation(QNetworkAccessManager::GetOperation);
setUrl(req.url());
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 403);
setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, "Forbidden");
open(QIODevice::ReadOnly);
setFinished(true);
// cause signal to be called later
QTimer::singleShot(0, this, SIGNAL(readyRead()));
QTimer::singleShot(0, this, SIGNAL(finished()));
}

virtual ~networkDeniedReply() {
ashkulz marked this conversation as resolved.
Show resolved Hide resolved
}

virtual void abort() {
}

virtual qint64 readData(char *, qint64) {
return -1; // EOF
}

virtual qint64 writeData(const char *, qint64) {
return -1;
}
};

QNetworkReply * MyNetworkAccessManager::createRequest(Operation op, const QNetworkRequest & req, QIODevice * outgoingData) {
emit debug(QString("Creating request: ") + req.url().toString());

Expand Down Expand Up @@ -101,8 +133,7 @@ QNetworkReply * MyNetworkAccessManager::createRequest(Operation op, const QNetwo
if (!ok) {
QNetworkRequest r2 = req;
emit warning(QString("Blocked access to file %1").arg(QFileInfo(req.url().toLocalFile()).canonicalFilePath()));
r2.setUrl(QUrl("about:blank"));
return QNetworkAccessManager::createRequest(op, r2, outgoingData);
return new networkDeniedReply(req);
ashkulz marked this conversation as resolved.
Show resolved Hide resolved
}
}
QNetworkRequest r3 = req;
Expand Down