diff --git a/src/base/http/requestparser.cpp b/src/base/http/requestparser.cpp index 6067cbaa0..69d2a2cdc 100644 --- a/src/base/http/requestparser.cpp +++ b/src/base/http/requestparser.cpp @@ -203,7 +203,10 @@ bool RequestParser::parsePostMessage(const QByteArray &data) // application/x-www-form-urlencoded if (contentTypeLower.startsWith(CONTENT_TYPE_FORM_ENCODED)) { - QListIterator i(QUrlQuery(data).queryItems(QUrl::FullyDecoded)); + // [URL Standard] 5.1 application/x-www-form-urlencoded parsing + const QByteArray processedData = QByteArray(data).replace('+', ' '); + + QListIterator i(QUrlQuery(processedData).queryItems(QUrl::FullyDecoded)); while (i.hasNext()) { const QStringPair pair = i.next(); m_request.posts[pair.first] = pair.second; diff --git a/src/webui/api/synccontroller.cpp b/src/webui/api/synccontroller.cpp index 0bc77fd14..e16e059b2 100644 --- a/src/webui/api/synccontroller.cpp +++ b/src/webui/api/synccontroller.cpp @@ -29,8 +29,8 @@ #include "synccontroller.h" #include +#include #include -#include #include "base/bittorrent/peerinfo.h" #include "base/bittorrent/session.h" @@ -330,7 +330,7 @@ SyncController::SyncController(ISessionManager *sessionManager, QObject *parent) connect(m_freeDiskSpaceChecker, &FreeDiskSpaceChecker::checked, this, &SyncController::freeDiskSpaceSizeUpdated); m_freeDiskSpaceThread->start(); - QTimer::singleShot(0, m_freeDiskSpaceChecker, &FreeDiskSpaceChecker::check); + invokeChecker(); m_freeDiskSpaceElapsedTimer.start(); } @@ -516,7 +516,7 @@ void SyncController::torrentPeersAction() qint64 SyncController::getFreeDiskSpace() { if (m_freeDiskSpaceElapsedTimer.hasExpired(FREEDISKSPACE_CHECK_TIMEOUT)) { - QTimer::singleShot(0, m_freeDiskSpaceChecker, &FreeDiskSpaceChecker::check); + invokeChecker(); m_freeDiskSpaceElapsedTimer.restart(); } @@ -527,3 +527,12 @@ void SyncController::freeDiskSpaceSizeUpdated(qint64 freeSpaceSize) { m_freeDiskSpace = freeSpaceSize; } + +void SyncController::invokeChecker() const +{ +#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) + QMetaObject::invokeMethod(m_freeDiskSpaceChecker, &FreeDiskSpaceChecker::check, Qt::QueuedConnection); +#else + QMetaObject::invokeMethod(m_freeDiskSpaceChecker, "check", Qt::QueuedConnection); +#endif +} diff --git a/src/webui/api/synccontroller.h b/src/webui/api/synccontroller.h index e6c48c669..35422478a 100644 --- a/src/webui/api/synccontroller.h +++ b/src/webui/api/synccontroller.h @@ -56,6 +56,7 @@ private slots: private: qint64 getFreeDiskSpace(); + void invokeChecker() const; qint64 m_freeDiskSpace = 0; FreeDiskSpaceChecker *m_freeDiskSpaceChecker = nullptr;