1
0
Fork 0
forked from len0rd/rockbox

Rockbox Utility: fix proxy password getting lost (FS#12166).

The proxy settings are stored as string representation in the configuration
file. If username / password contains characters used as separators parsing the
string again will cause wrong results. Percent-encode them before storing, and
parse it as percent-encoded string when reading it back.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30071 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Riebeling 2011-06-25 17:21:06 +00:00
parent dfd4183a7d
commit a3875d7dfe
2 changed files with 16 additions and 5 deletions

View file

@ -121,7 +121,16 @@ void Config::accept()
proxy.setPort(ui.proxyPort->text().toInt());
}
RbSettings::setValue(RbSettings::Proxy, proxy.toString());
// QUrl::toEncoded() doesn't encode a colon in the password correctly,
// which will result in errors during parsing the string.
// QUrl::toPercentEncoding() does work as expected, so build the string to
// store in the configuration file manually.
QString proxystring = "http://"
+ QString(QUrl::toPercentEncoding(proxy.userName())) + ":"
+ QString(QUrl::toPercentEncoding(proxy.password())) + "@"
+ proxy.host() + ":"
+ QString::number(proxy.port());
RbSettings::setValue(RbSettings::Proxy, proxystring);
qDebug() << "[Config] setting proxy to:" << proxy;
// proxy type
QString proxyType;
@ -218,7 +227,7 @@ void Config::abort()
void Config::setUserSettings()
{
// set proxy
proxy = RbSettings::value(RbSettings::Proxy).toString();
proxy.setEncodedUrl(RbSettings::value(RbSettings::Proxy).toByteArray());
if(proxy.port() > 0)
ui.proxyPort->setText(QString("%1").arg(proxy.port()));