From d92ef3fa4d8cdc6f28170b198d430d62a7e66e76 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Tue, 30 May 2017 21:10:47 +0300 Subject: [PATCH] Fix Qt4 build. --- src/base/http/connection.cpp | 9 ++++++++- src/base/http/responsegenerator.cpp | 3 +++ src/base/http/server.cpp | 25 ++++++++++++++++--------- src/webui/abstractwebapplication.cpp | 17 +++++++++++------ 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/base/http/connection.cpp b/src/base/http/connection.cpp index 4a8709232..46dadd22b 100644 --- a/src/base/http/connection.cpp +++ b/src/base/http/connection.cpp @@ -32,6 +32,9 @@ #include "connection.h" #include +#ifndef QBT_USES_QT5 +#include +#endif #include #include "irequesthandler.h" @@ -107,7 +110,7 @@ bool Connection::acceptsGzipEncoding(QString codings) const auto isCodingAvailable = [](const QStringList &list, const QString &encoding) -> bool { - foreach (const QString &str, list) { + for (const QString &str: list) { if (!str.startsWith(encoding)) continue; @@ -116,7 +119,11 @@ bool Connection::acceptsGzipEncoding(QString codings) return true; // [rfc7231] 5.3.1. Quality Values +#ifdef QBT_USES_QT5 const QStringRef substr = str.midRef(encoding.size() + 3); // ex. skip over "gzip;q=" +#else + const QString substr = str.mid(encoding.size() + 3); // ex. skip over "gzip;q=" +#endif bool ok = false; const double qvalue = substr.toDouble(&ok); diff --git a/src/base/http/responsegenerator.cpp b/src/base/http/responsegenerator.cpp index 4ac6cba61..79e93f2d9 100644 --- a/src/base/http/responsegenerator.cpp +++ b/src/base/http/responsegenerator.cpp @@ -32,6 +32,9 @@ #include "responsegenerator.h" #include +#ifndef QBT_USES_QT5 +#include +#endif #include "base/utils/gzip.h" diff --git a/src/base/http/server.cpp b/src/base/http/server.cpp index 12dc883db..7626d91f6 100644 --- a/src/base/http/server.cpp +++ b/src/base/http/server.cpp @@ -62,7 +62,7 @@ Server::Server(IRequestHandler *requestHandler, QObject *parent) #endif QTimer *dropConnectionTimer = new QTimer(this); - connect(dropConnectionTimer, &QTimer::timeout, this, &Server::dropTimedOutConnection); + connect(dropConnectionTimer, SIGNAL(timeout()), SLOT(dropTimedOutConnection())); dropConnectionTimer->start(CONNECTIONS_SCAN_INTERVAL * 1000); } @@ -70,7 +70,11 @@ Server::~Server() { } +#ifdef QBT_USES_QT5 void Server::incomingConnection(qintptr socketDescriptor) +#else +void Server::incomingConnection(int socketDescriptor) +#endif { if (m_connections.size() >= CONNECTIONS_LIMIT) return; @@ -91,7 +95,11 @@ void Server::incomingConnection(qintptr socketDescriptor) if (m_https) { static_cast(serverSocket)->setProtocol(QSsl::SecureProtocols); static_cast(serverSocket)->setPrivateKey(m_key); +#ifdef QBT_USES_QT5 static_cast(serverSocket)->setLocalCertificateChain(m_certificates); +#else + static_cast(serverSocket)->setLocalCertificate(m_certificates.first()); +#endif static_cast(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone); static_cast(serverSocket)->startServerEncryption(); } @@ -118,7 +126,14 @@ bool Server::setupHttps(const QByteArray &certificates, const QByteArray &key) { QSslKey sslKey(key, QSsl::Rsa); if (sslKey.isNull()) +#ifdef QBT_USES_QT5 sslKey = QSslKey(key, QSsl::Ec); +#else + { + disableHttps(); + return false; + } +#endif const QList certs = QSslCertificate::fromData(certificates); const bool areCertsValid = !certs.empty() && std::all_of(certs.begin(), certs.end(), [](const QSslCertificate &c) { return !c.isNull(); }); @@ -143,14 +158,6 @@ void Server::disableHttps() m_certificates.clear(); m_key.clear(); } -#ifdef QBT_USES_QT5 -#else -void Server::incomingConnection(int socketDescriptor) -#endif -#ifdef QBT_USES_QT5 -#else - static_cast(serverSocket)->setLocalCertificate(m_certificates.first()); -#endif QList Server::safeCipherList() const { diff --git a/src/webui/abstractwebapplication.cpp b/src/webui/abstractwebapplication.cpp index eb8f6f282..c5becb6e5 100644 --- a/src/webui/abstractwebapplication.cpp +++ b/src/webui/abstractwebapplication.cpp @@ -252,13 +252,9 @@ void AbstractWebApplication::translateDocument(QString& data) if (isTranslationNeeded) { QString context = regex.cap(4); #ifndef QBT_USES_QT5 - translation = qApp->translate(context.toUtf8().constData(), word.constData(), 0, QCoreApplication::UnicodeUTF8, 1); + translation = qApp->translate(context.toUtf8().constData(), word.constData(), 0, QCoreApplication::UnicodeUTF8, 1); #else translation = qApp->translate(context.toUtf8().constData(), word.constData(), 0, 1); -#endif -#ifndef QBT_USES_QT5 - translation = qApp->translate(contexts[context_index].c_str(), word.constData(), 0, QCoreApplication::UnicodeUTF8, 1); -#else #endif } // Remove keyboard shortcuts @@ -397,16 +393,25 @@ QStringMap AbstractWebApplication::parseCookie(const Http::Request &request) con // [rfc6265] 4.2.1. Syntax QStringMap ret; const QString cookieStr = request.headers.value(QLatin1String("cookie")); +#ifdef QBT_USES_QT5 const QVector cookies = cookieStr.splitRef(';', QString::SkipEmptyParts); +#else + const QStringList cookies = cookieStr.split(';', QString::SkipEmptyParts); +#endif for (const auto &cookie : cookies) { const int idx = cookie.indexOf('='); if (idx < 0) continue; - +#ifdef QBT_USES_QT5 const QString name = cookie.left(idx).trimmed().toString(); const QString value = Utils::String::unquote(cookie.mid(idx + 1).trimmed()) .toString(); +#else + const QString name = cookie.left(idx).trimmed(); + const QString value = Utils::String::unquote(cookie.mid(idx + 1).trimmed()); +#endif + ret.insert(name, value); } return ret;