Fix '+' char not decoded to space correctly

Closes #10606.
This commit is contained in:
Chocobo1 2019-05-09 11:17:41 +08:00
parent 412b51fb3c
commit 69d29af097
No known key found for this signature in database
GPG key ID: 210D9C873253A68C
2 changed files with 5 additions and 4 deletions

View file

@ -143,8 +143,8 @@ void Tracker::respondToAnnounceRequest()
const QByteArray nameComponent = midView(param, 0, sepPos);
const QByteArray valueComponent = midView(param, (sepPos + 1));
const QString paramName = QString::fromUtf8(QByteArray::fromPercentEncoding(nameComponent));
const QByteArray paramValue = QByteArray::fromPercentEncoding(valueComponent);
const QString paramName = QString::fromUtf8(QByteArray::fromPercentEncoding(nameComponent).replace('+', ' '));
const QByteArray paramValue = QByteArray::fromPercentEncoding(valueComponent).replace('+', ' ');
queryParams[paramName] = paramValue;
}

View file

@ -415,6 +415,7 @@ Http::Response WebApplication::processRequest(const Http::Request &request, cons
m_request = request;
m_env = env;
m_params.clear();
if (m_request.method == Http::METHOD_GET) {
// Parse GET parameters
using namespace Utils::ByteArray;
@ -425,8 +426,8 @@ Http::Response WebApplication::processRequest(const Http::Request &request, cons
const QByteArray nameComponent = midView(param, 0, sepPos);
const QByteArray valueComponent = midView(param, (sepPos + 1));
const QString paramName = QString::fromUtf8(QByteArray::fromPercentEncoding(nameComponent));
const QString paramValue = QString::fromUtf8(QByteArray::fromPercentEncoding(valueComponent));
const QString paramName = QString::fromUtf8(QByteArray::fromPercentEncoding(nameComponent).replace('+', ' '));
const QString paramValue = QString::fromUtf8(QByteArray::fromPercentEncoding(valueComponent).replace('+', ' '));
m_params[paramName] = paramValue;
}
}