Fix Qt4 build.

This commit is contained in:
sledgehammer999 2017-05-30 21:10:47 +03:00
commit d92ef3fa4d
No known key found for this signature in database
GPG key ID: 6E4A2D025B7CC9A2
4 changed files with 38 additions and 16 deletions

View file

@ -32,6 +32,9 @@
#include "connection.h" #include "connection.h"
#include <QRegExp> #include <QRegExp>
#ifndef QBT_USES_QT5
#include <QStringList>
#endif
#include <QTcpSocket> #include <QTcpSocket>
#include "irequesthandler.h" #include "irequesthandler.h"
@ -107,7 +110,7 @@ bool Connection::acceptsGzipEncoding(QString codings)
const auto isCodingAvailable = [](const QStringList &list, const QString &encoding) -> bool const auto isCodingAvailable = [](const QStringList &list, const QString &encoding) -> bool
{ {
foreach (const QString &str, list) { for (const QString &str: list) {
if (!str.startsWith(encoding)) if (!str.startsWith(encoding))
continue; continue;
@ -116,7 +119,11 @@ bool Connection::acceptsGzipEncoding(QString codings)
return true; return true;
// [rfc7231] 5.3.1. Quality Values // [rfc7231] 5.3.1. Quality Values
#ifdef QBT_USES_QT5
const QStringRef substr = str.midRef(encoding.size() + 3); // ex. skip over "gzip;q=" 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; bool ok = false;
const double qvalue = substr.toDouble(&ok); const double qvalue = substr.toDouble(&ok);

View file

@ -32,6 +32,9 @@
#include "responsegenerator.h" #include "responsegenerator.h"
#include <QDateTime> #include <QDateTime>
#ifndef QBT_USES_QT5
#include <QLocale>
#endif
#include "base/utils/gzip.h" #include "base/utils/gzip.h"

View file

@ -62,7 +62,7 @@ Server::Server(IRequestHandler *requestHandler, QObject *parent)
#endif #endif
QTimer *dropConnectionTimer = new QTimer(this); QTimer *dropConnectionTimer = new QTimer(this);
connect(dropConnectionTimer, &QTimer::timeout, this, &Server::dropTimedOutConnection); connect(dropConnectionTimer, SIGNAL(timeout()), SLOT(dropTimedOutConnection()));
dropConnectionTimer->start(CONNECTIONS_SCAN_INTERVAL * 1000); dropConnectionTimer->start(CONNECTIONS_SCAN_INTERVAL * 1000);
} }
@ -70,7 +70,11 @@ Server::~Server()
{ {
} }
#ifdef QBT_USES_QT5
void Server::incomingConnection(qintptr socketDescriptor) void Server::incomingConnection(qintptr socketDescriptor)
#else
void Server::incomingConnection(int socketDescriptor)
#endif
{ {
if (m_connections.size() >= CONNECTIONS_LIMIT) return; if (m_connections.size() >= CONNECTIONS_LIMIT) return;
@ -91,7 +95,11 @@ void Server::incomingConnection(qintptr socketDescriptor)
if (m_https) { if (m_https) {
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols); static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
static_cast<QSslSocket *>(serverSocket)->setPrivateKey(m_key); static_cast<QSslSocket *>(serverSocket)->setPrivateKey(m_key);
#ifdef QBT_USES_QT5
static_cast<QSslSocket *>(serverSocket)->setLocalCertificateChain(m_certificates); static_cast<QSslSocket *>(serverSocket)->setLocalCertificateChain(m_certificates);
#else
static_cast<QSslSocket *>(serverSocket)->setLocalCertificate(m_certificates.first());
#endif
static_cast<QSslSocket *>(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone); static_cast<QSslSocket *>(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
static_cast<QSslSocket *>(serverSocket)->startServerEncryption(); static_cast<QSslSocket *>(serverSocket)->startServerEncryption();
} }
@ -118,7 +126,14 @@ bool Server::setupHttps(const QByteArray &certificates, const QByteArray &key)
{ {
QSslKey sslKey(key, QSsl::Rsa); QSslKey sslKey(key, QSsl::Rsa);
if (sslKey.isNull()) if (sslKey.isNull())
#ifdef QBT_USES_QT5
sslKey = QSslKey(key, QSsl::Ec); sslKey = QSslKey(key, QSsl::Ec);
#else
{
disableHttps();
return false;
}
#endif
const QList<QSslCertificate> certs = QSslCertificate::fromData(certificates); const QList<QSslCertificate> certs = QSslCertificate::fromData(certificates);
const bool areCertsValid = !certs.empty() && std::all_of(certs.begin(), certs.end(), [](const QSslCertificate &c) { return !c.isNull(); }); 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_certificates.clear();
m_key.clear(); m_key.clear();
} }
#ifdef QBT_USES_QT5
#else
void Server::incomingConnection(int socketDescriptor)
#endif
#ifdef QBT_USES_QT5
#else
static_cast<QSslSocket *>(serverSocket)->setLocalCertificate(m_certificates.first());
#endif
QList<QSslCipher> Server::safeCipherList() const QList<QSslCipher> Server::safeCipherList() const
{ {

View file

@ -252,13 +252,9 @@ void AbstractWebApplication::translateDocument(QString& data)
if (isTranslationNeeded) { if (isTranslationNeeded) {
QString context = regex.cap(4); QString context = regex.cap(4);
#ifndef QBT_USES_QT5 #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 #else
translation = qApp->translate(context.toUtf8().constData(), word.constData(), 0, 1); 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 #endif
} }
// Remove keyboard shortcuts // Remove keyboard shortcuts
@ -397,16 +393,25 @@ QStringMap AbstractWebApplication::parseCookie(const Http::Request &request) con
// [rfc6265] 4.2.1. Syntax // [rfc6265] 4.2.1. Syntax
QStringMap ret; QStringMap ret;
const QString cookieStr = request.headers.value(QLatin1String("cookie")); const QString cookieStr = request.headers.value(QLatin1String("cookie"));
#ifdef QBT_USES_QT5
const QVector<QStringRef> cookies = cookieStr.splitRef(';', QString::SkipEmptyParts); const QVector<QStringRef> cookies = cookieStr.splitRef(';', QString::SkipEmptyParts);
#else
const QStringList cookies = cookieStr.split(';', QString::SkipEmptyParts);
#endif
for (const auto &cookie : cookies) { for (const auto &cookie : cookies) {
const int idx = cookie.indexOf('='); const int idx = cookie.indexOf('=');
if (idx < 0) if (idx < 0)
continue; continue;
#ifdef QBT_USES_QT5
const QString name = cookie.left(idx).trimmed().toString(); const QString name = cookie.left(idx).trimmed().toString();
const QString value = Utils::String::unquote(cookie.mid(idx + 1).trimmed()) const QString value = Utils::String::unquote(cookie.mid(idx + 1).trimmed())
.toString(); .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); ret.insert(name, value);
} }
return ret; return ret;