diff --git a/interface/src/DiscoverabilityManager.cpp b/interface/src/DiscoverabilityManager.cpp index 83f87f82ba..24256fdf39 100644 --- a/interface/src/DiscoverabilityManager.cpp +++ b/interface/src/DiscoverabilityManager.cpp @@ -127,6 +127,10 @@ void DiscoverabilityManager::handleHeartbeatResponse(QNetworkReply& requestReply if (!dataObject.isEmpty()) { _sessionID = dataObject[SESSION_ID_KEY].toString(); + + // give that session ID to the account manager + auto accountManager = DependencyManager::get<AccountManager>(); + accountManager->setSessionID(_sessionID); } } diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index 9080e3cc53..46e72170e5 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -9,6 +9,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include "AccountManager.h" + #include <memory> #include <QtCore/QDataStream> @@ -26,13 +28,13 @@ #include <SettingHandle.h> +#include "NetworkLogging.h" #include "NodeList.h" #include "udt/PacketHeaders.h" #include "RSAKeypairGenerator.h" #include "SharedUtil.h" +#include "UserActivityLogger.h" -#include "AccountManager.h" -#include "NetworkLogging.h" const bool VERBOSE_HTTP_REQUEST_DEBUGGING = false; @@ -216,6 +218,13 @@ void AccountManager::sendRequest(const QString& path, networkRequest.setHeader(QNetworkRequest::UserAgentHeader, _userAgentGetter()); + // if we're allowed to send usage data, include whatever the current session ID is with this request + auto& activityLogger = UserActivityLogger::getInstance(); + if (activityLogger.isEnabled()) { + static const QString METAVERSE_SESSION_ID_HEADER = "HFM-SessionID"; + networkRequest.setRawHeader(METAVERSE_SESSION_ID_HEADER.toLocal8Bit(), _sessionID.toString().toLocal8Bit()); + } + QUrl requestURL = _authURL; if (path.startsWith("/")) { diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index 89a2240bbb..4803d2625f 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -86,6 +86,8 @@ public: static QJsonObject dataObjectFromResponse(QNetworkReply& requestReply); + void setSessionID(const QUuid& sessionID) { _sessionID = sessionID; } + public slots: void requestAccessToken(const QString& login, const QString& password); @@ -136,6 +138,8 @@ private: bool _isWaitingForKeypairResponse { false }; QByteArray _pendingPrivateKey; + + QUuid _sessionID; }; #endif // hifi_AccountManager_h