From 89cb3d66e4ba3232732e069500f84b98d6a5703a Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 12 May 2015 15:39:22 -0700 Subject: [PATCH] make sure paths are prepended with a slash --- domain-server/src/DomainServer.cpp | 5 +++-- domain-server/src/DomainServerSettingsManager.cpp | 13 ++++++++++++- domain-server/src/DomainServerSettingsManager.h | 2 ++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 09ab25ad91..0b42f78fe2 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -2216,12 +2216,13 @@ void DomainServer::respondToPathQuery(const QByteArray& receivedPacket, const Hi pathQuery.prepend("/"); } - const QString PATHS_SETTINGS_KEYPATH_FORMAT = "paths.%2"; + const QString PATHS_SETTINGS_KEYPATH_FORMAT = "%1.%2"; const QString PATH_VIEWPOINT_KEY = "viewpoint"; // check out paths in the _configMap to see if we have a match const QVariant* pathMatch = valueForKeyPath(_settingsManager.getSettingsMap(), - QString(PATHS_SETTINGS_KEYPATH_FORMAT).arg(pathQuery)); + QString(PATHS_SETTINGS_KEYPATH_FORMAT).arg(SETTINGS_PATHS_KEY) + .arg(pathQuery)); if (pathMatch) { // we got a match, respond with the resulting viewpoint auto nodeList = DependencyManager::get(); diff --git a/domain-server/src/DomainServerSettingsManager.cpp b/domain-server/src/DomainServerSettingsManager.cpp index 665038de39..589231b56a 100644 --- a/domain-server/src/DomainServerSettingsManager.cpp +++ b/domain-server/src/DomainServerSettingsManager.cpp @@ -297,7 +297,18 @@ void DomainServerSettingsManager::updateSetting(const QString& key, const QJsonV } } - updateSetting(childKey, newValue.toObject()[childKey], thisMap, childDescriptionObject); + QString sanitizedKey = childKey; + + if (key == SETTINGS_PATHS_KEY) { + // We perform special handling for paths here. + // If we got sent a path without a leading slash then we add it. + + if (!sanitizedKey.startsWith("/")) { + sanitizedKey.prepend("/"); + } + } + + updateSetting(sanitizedKey, newValue.toObject()[childKey], thisMap, childDescriptionObject); } if (settingMap[key].toMap().isEmpty()) { diff --git a/domain-server/src/DomainServerSettingsManager.h b/domain-server/src/DomainServerSettingsManager.h index 1e581c5a21..450baf66ae 100644 --- a/domain-server/src/DomainServerSettingsManager.h +++ b/domain-server/src/DomainServerSettingsManager.h @@ -18,6 +18,8 @@ #include #include +const QString SETTINGS_PATHS_KEY = "paths"; + class DomainServerSettingsManager : public QObject { Q_OBJECT public: