From: Markus Goetz Date: Thu, 13 Jul 2017 18:24:44 +0000 (+0200) Subject: X-Request-ID: Send per request not per account #5853 X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~704^2^2~30 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=1fb68e8711e7efa194cf5cd4c915b025e9572038;p=nextcloud-desktop.git X-Request-ID: Send per request not per account #5853 --- diff --git a/src/libsync/accessmanager.cpp b/src/libsync/accessmanager.cpp index 1d8e91d4c..4c19c20a1 100644 --- a/src/libsync/accessmanager.cpp +++ b/src/libsync/accessmanager.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include "cookiejar.h" #include "accessmanager.h" @@ -59,6 +60,13 @@ void AccessManager::setRawCookie(const QByteArray &rawCookie, const QUrl &url) jar->setCookiesFromUrl(cookieList, url); } +static QByteArray generateRequestId() +{ + // Use a UUID with the starting and ending curly brace removed. + auto uuid = QUuid::createUuid().toByteArray(); + return uuid.mid(1, uuid.size() - 2); +} + QNetworkReply *AccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData) { QNetworkRequest newRequest(request); @@ -79,6 +87,12 @@ QNetworkReply *AccessManager::createRequest(QNetworkAccessManager::Operation op, if (verb == "PROPFIND") { newRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("text/xml; charset=utf-8")); } + + // Generate a new request id + QByteArray requestId = generateRequestId(); + qInfo(lcAccessManager) << op << verb << newRequest.url().toString() << "has X-Request-ID" << requestId; + newRequest.setRawHeader("X-Request-ID", requestId); + return QNetworkAccessManager::createRequest(op, newRequest, outgoingData); } diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 2d798c0ec..45168033f 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -33,8 +33,6 @@ #include #include -#include - namespace OCC { Q_LOGGING_CATEGORY(lcAccount, "sync.account", QtInfoMsg) @@ -125,13 +123,6 @@ AbstractCredentials *Account::credentials() const return _credentials.data(); } -static QByteArray generateRequestId() -{ - // Use a UUID with the starting and ending curly brace removed. - auto uuid = QUuid::createUuid().toByteArray(); - return uuid.mid(1, uuid.size() - 2); -} - void Account::setCredentials(AbstractCredentials *cred) { // set active credential manager @@ -164,10 +155,6 @@ void Account::setCredentials(AbstractCredentials *cred) SLOT(slotCredentialsFetched())); connect(_credentials.data(), SIGNAL(asked()), SLOT(slotCredentialsAsked())); - - // Generate a new request id - _requestId = generateRequestId(); - qCInfo(lcAccount) << "Account for" << url() << "has X-Request-ID" << _requestId; } QUrl Account::davUrl() const @@ -243,7 +230,6 @@ QNetworkReply *Account::sendRequest(const QByteArray &verb, const QUrl &url, QNe { req.setUrl(url); req.setSslConfiguration(this->getOrCreateSslConfig()); - req.setRawHeader("X-Request-ID", _requestId); if (verb == "HEAD" && !data) { return _am->head(req); } else if (verb == "GET" && !data) { diff --git a/src/libsync/account.h b/src/libsync/account.h index 9fdc79ac9..b34342d45 100644 --- a/src/libsync/account.h +++ b/src/libsync/account.h @@ -251,9 +251,6 @@ private: /// Certificates that were explicitly rejected by the user QList _rejectedCertificates; - /// X-Request-ID to send in network requests - QByteArray _requestId; - static QString _configFileName; QString _davPath; // defaults to value from theme, might be overwritten in brandings