Fixes plexinc/plex-media-player-private#533
@@ -92,7 +92,8 @@ QVariantMap RemoteComponent::ResourceInformation()
QVariantMap RemoteComponent::GDMInformation()
{
QVariantMap headers = {
- {"Name", Utils::ComputerName()},
+ {"Name", Utils::sanitizeForHttpSeparators(Utils::ComputerName())},
+ {"RawName", Utils::ComputerName()},
{"Port", SettingsComponent::Get().value(SETTINGS_SECTION_MAIN, "webserverport")},
{"Version", Version::GetVersionString()},
{"Product", "Plex Media Player"},
@@ -18,6 +18,23 @@
#include "QsLog.h"
+QList<QChar> httpSeparators = { '(', ')', '<', '>', '@', ',', ';', ':', '\\', '\"', '/', '[', ']', '?', '=', '{', '}' };
+
+/////////////////////////////////////////////////////////////////////////////////////////
+QString Utils::sanitizeForHttpSeparators(const QString& input)
+{
+ auto output = input;
+ for (const QChar& c : httpSeparators)
+ output.replace(c, "");
+ for (int i = 0; i < output.size(); i ++)
+ {
+ if (!isalnum(output.at(i).toLatin1()))
+ output[i] = '_';
+ }
+ return output;
+}
/////////////////////////////////////////////////////////////////////////////////////////
QString Utils::ComputerName()
@@ -58,6 +58,7 @@ namespace Utils
QString PrimaryIPv4Address();
QString ClientUUID();
bool safelyWriteFile(const QString& filename, const QByteArray& data);
+ QString sanitizeForHttpSeparators(const QString& input);
}
#endif // UTILS_H