eliminate redirection cycles
This commit is contained in:
parent
2a2af7ae1d
commit
f1dd53eb8a
3 changed files with 25 additions and 0 deletions
|
@ -99,6 +99,7 @@
|
||||||
#define DEFAULT_NOTIFICATION_VOLUME 50
|
#define DEFAULT_NOTIFICATION_VOLUME 50
|
||||||
#define MAX_THREADPOOL_THREADS 32
|
#define MAX_THREADPOOL_THREADS 32
|
||||||
#define WEB_BROWSER_SCROLL_STEP 50.0
|
#define WEB_BROWSER_SCROLL_STEP 50.0
|
||||||
|
#define MAX_NUMBER_OF_REDIRECTIONS 4
|
||||||
|
|
||||||
#define NOTIFICATIONS_MARGIN 16
|
#define NOTIFICATIONS_MARGIN 16
|
||||||
#define NOTIFICATIONS_WIDTH 256
|
#define NOTIFICATIONS_WIDTH 256
|
||||||
|
|
|
@ -63,6 +63,8 @@ QNetworkReply* BaseNetworkAccessManager::createRequest(QNetworkAccessManager::Op
|
||||||
new_request.setAttribute(QNetworkRequest::Attribute::Http2AllowedAttribute, m_enableHttp2);
|
new_request.setAttribute(QNetworkRequest::Attribute::Http2AllowedAttribute, m_enableHttp2);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// new_request.setMaximumRedirectsAllowed(0);
|
||||||
|
|
||||||
new_request.setRawHeader(HTTP_HEADERS_COOKIE, QSL("JSESSIONID= ").toLocal8Bit());
|
new_request.setRawHeader(HTTP_HEADERS_COOKIE, QSL("JSESSIONID= ").toLocal8Bit());
|
||||||
|
|
||||||
auto custom_ua = qApp->web()->customUserAgent();
|
auto custom_ua = qApp->web()->customUserAgent();
|
||||||
|
|
|
@ -134,6 +134,14 @@ void Downloader::manipulateData(const QString& url,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int numberOfRedirections(QNetworkReply* reply) {
|
||||||
|
return reply->property("redirections_count").toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
static int setNumberOfRedirections(QNetworkReply* reply, int number) {
|
||||||
|
return reply->setProperty("redirections_count", number);
|
||||||
|
}
|
||||||
|
|
||||||
void Downloader::finished() {
|
void Downloader::finished() {
|
||||||
auto* reply = qobject_cast<QNetworkReply*>(sender());
|
auto* reply = qobject_cast<QNetworkReply*>(sender());
|
||||||
|
|
||||||
|
@ -151,6 +159,19 @@ void Downloader::finished() {
|
||||||
QUrl redirection_url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
|
QUrl redirection_url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
|
||||||
|
|
||||||
if (redirection_url.isValid()) {
|
if (redirection_url.isValid()) {
|
||||||
|
auto redir_number = numberOfRedirections(reply);
|
||||||
|
|
||||||
|
qDebugNN << LOGSEC_NETWORK << "This network request was redirected" << QUOTE_W_SPACE(redir_number) << "times.";
|
||||||
|
|
||||||
|
redir_number++;
|
||||||
|
|
||||||
|
if (redir_number > MAX_NUMBER_OF_REDIRECTIONS) {
|
||||||
|
qDebugNN << LOGSEC_NETWORK << "Aborting request due too many redirections.";
|
||||||
|
|
||||||
|
emit completed(redirection_url, QNetworkReply::NetworkError::TooManyRedirectsError, 404, {});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Communication indicates that HTTP redirection is needed.
|
// Communication indicates that HTTP redirection is needed.
|
||||||
// Setup redirection URL and download again.
|
// Setup redirection URL and download again.
|
||||||
QNetworkRequest request = reply->request();
|
QNetworkRequest request = reply->request();
|
||||||
|
@ -188,6 +209,7 @@ void Downloader::finished() {
|
||||||
|
|
||||||
if (m_activeReply != nullptr) {
|
if (m_activeReply != nullptr) {
|
||||||
m_activeReply->setProperty("original_url", original_url);
|
m_activeReply->setProperty("original_url", original_url);
|
||||||
|
setNumberOfRedirections(m_activeReply, redir_number);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Add table
Reference in a new issue