From 38776fe007220cc7b57fdc68e2ac975a359ae22e Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 30 Jun 2016 14:35:27 -0700 Subject: [PATCH] Fix multiple sessions being created for some users If a user didn't have send-data activated they don't have their session id sent in the header of requests, but instead send it inside the request body. The session id being send in the request included curly braces which the server considers invalid. --- interface/src/DiscoverabilityManager.cpp | 6 ++---- libraries/networking/src/AccountManager.h | 3 +++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/interface/src/DiscoverabilityManager.cpp b/interface/src/DiscoverabilityManager.cpp index c4d985419e..6550edff18 100644 --- a/interface/src/DiscoverabilityManager.cpp +++ b/interface/src/DiscoverabilityManager.cpp @@ -80,8 +80,7 @@ void DiscoverabilityManager::updateLocation() { locationObject.insert(FRIENDS_ONLY_KEY_IN_LOCATION, (_mode.get() == Discoverability::Friends)); // if we have a session ID add it now, otherwise add a null value - auto sessionID = accountManager->getSessionID(); - rootObject[SESSION_ID_KEY] = sessionID.isNull() ? QJsonValue() : sessionID.toString(); + rootObject[SESSION_ID_KEY] = accountManager->getSessionIDWithoutCurlyBraces(); JSONCallbackParameters callbackParameters; callbackParameters.jsonCallbackReceiver = this; @@ -111,8 +110,7 @@ void DiscoverabilityManager::updateLocation() { callbackParameters.jsonCallbackMethod = "handleHeartbeatResponse"; QJsonObject heartbeatObject; - auto sessionID = accountManager->getSessionID(); - heartbeatObject[SESSION_ID_KEY] = sessionID.isNull() ? QJsonValue() : sessionID.toString(); + heartbeatObject[SESSION_ID_KEY] = accountManager->getSessionIDWithoutCurlyBraces(); accountManager->sendRequest(API_USER_HEARTBEAT_PATH, AccountManagerAuth::Optional, QNetworkAccessManager::PutOperation, callbackParameters, diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index c12f663d3e..7a8d2a72fa 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -24,6 +24,8 @@ #include +#include "UUID.h" + class JSONCallbackParameters { public: JSONCallbackParameters(QObject* jsonCallbackReceiver = nullptr, const QString& jsonCallbackMethod = QString(), @@ -86,6 +88,7 @@ public: static QJsonObject dataObjectFromResponse(QNetworkReply& requestReply); + QString getSessionIDWithoutCurlyBraces() const { return uuidStringWithoutCurlyBraces(_sessionID); } QUuid getSessionID() const { return _sessionID; } void setSessionID(const QUuid& sessionID) { _sessionID = sessionID; }