Skip to content

Commit ca06d40

Browse files
committedJan 25, 2019
Add custom QNetworkRequest::Attributes for initiator network request class name and internal id
And allow these to be retrieved from QgsNetworkRequestParameters. This allows logging code to identify the area of code where a request originated from, making debugging much easier! Tag all requests created with appropriate class name and IDs
1 parent a491e90 commit ca06d40

20 files changed

+121
-7
lines changed
 

‎python/core/auto_generated/qgsnetworkaccessmanager.sip.in

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111

1212

13+
1314
class QgsNetworkRequestParameters
1415
{
1516
%Docstring
@@ -23,6 +24,12 @@ Encapsulates parameters and properties of a network request.
2324
%End
2425
public:
2526

27+
enum RequestAttributes
28+
{
29+
AttributeInitiatorClass,
30+
AttributeInitiatorRequestId,
31+
};
32+
2633
QgsNetworkRequestParameters();
2734
%Docstring
2835
Default constructor.
@@ -64,6 +71,27 @@ Returns a unique ID identifying the request.
6471
%Docstring
6572
Returns the request's content. This is only used for POST or PUT operation
6673
requests.
74+
%End
75+
76+
QString initiatorClassName() const;
77+
%Docstring
78+
Returns the class name of the object which initiated this request.
79+
80+
This is only available for QNetworkRequests which have had the
81+
QgsNetworkRequestParameters.AttributeInitiatorClass attribute set.
82+
83+
.. seealso:: :py:func:`initiatorRequestId`
84+
%End
85+
86+
QVariant initiatorRequestId() const;
87+
%Docstring
88+
Returns the internal ID used by the object which initiated this request to identify
89+
individual requests.
90+
91+
This is only available for QNetworkRequests which have had the
92+
QgsNetworkRequestParameters.AttributeInitiatorRequestId attribute set.
93+
94+
.. seealso:: :py:func:`initiatorClassName`
6795
%End
6896

6997
};

‎python/pyplugin_installer/installer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
from qgis.PyQt.QtNetwork import QNetworkRequest
3333

3434
import qgis
35-
from qgis.core import Qgis, QgsApplication, QgsNetworkAccessManager, QgsSettings
35+
from qgis.core import Qgis, QgsApplication, QgsNetworkAccessManager, QgsSettings, QgsNetworkRequestParameters
3636
from qgis.gui import QgsMessageBar, QgsPasswordLineEdit
3737
from qgis.utils import (iface, startPlugin, unloadPlugin, loadPlugin,
3838
reloadPlugin, updateAvailablePlugins)
@@ -527,6 +527,8 @@ def sendVote(self, plugin_id, vote):
527527
url = "http://plugins.qgis.org/plugins/RPC2/"
528528
params = {"id": "djangorpc", "method": "plugin.vote", "params": [str(plugin_id), str(vote)]}
529529
req = QNetworkRequest(QUrl(url))
530+
req.setAttribute(QNetworkRequest.Attribute(QgsNetworkRequestParameters.AttributeInitiatorClass), "QgsPluginInstaller")
531+
req.setAttribute(QNetworkRequest.Attribute(QgsNetworkRequestParameters.AttributeInitiatorRequestId), "sendVote")
530532
req.setRawHeader(b"Content-Type", b"application/json")
531533
QgsNetworkAccessManager.instance().post(req, bytes(json.dumps(params), "utf-8"))
532534
return True

‎python/pyplugin_installer/installer_data.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
QLocale, QByteArray)
2929
from qgis.PyQt.QtXml import QDomDocument
3030
from qgis.PyQt.QtNetwork import QNetworkRequest, QNetworkReply
31-
from qgis.core import Qgis, QgsSettings
31+
from qgis.core import Qgis, QgsSettings, QgsNetworkRequestParameters
3232
import sys
3333
import os
3434
import codecs
@@ -322,6 +322,7 @@ def requestFetching(self, key, url=None, redirectionCounter=0):
322322
# url.addQueryItem('qgis', '.'.join([str(int(s)) for s in [v[0], v[1:3]]]) ) # don't include the bugfix version!
323323

324324
self.mRepositories[key]["QRequest"] = QNetworkRequest(url)
325+
self.mRepositories[key]["QRequest"].setAttribute(QNetworkRequest.Attribute(QgsNetworkRequestParameters.AttributeInitiatorClass), "Relay")
325326
authcfg = self.mRepositories[key]["authcfg"]
326327
if authcfg and isinstance(authcfg, str):
327328
if not QgsApplication.authManager().updateNetworkRequest(

‎python/pyplugin_installer/qgsplugininstallerinstallingdialog.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
from qgis.PyQt.QtNetwork import QNetworkRequest, QNetworkReply
3131

3232
import qgis
33-
from qgis.core import QgsNetworkAccessManager, QgsApplication
33+
from qgis.core import QgsNetworkAccessManager, QgsApplication, QgsNetworkRequestParameters
3434

3535
from .ui_qgsplugininstallerinstallingbase import Ui_QgsPluginInstallerInstallingDialogBase
3636
from .installer_data import removeDir, repositories
@@ -62,6 +62,7 @@ def __init__(self, parent, plugin):
6262

6363
def requestDownloading(self):
6464
self.request = QNetworkRequest(self.url)
65+
self.request.setAttribute(QNetworkRequest.Attribute(QgsNetworkRequestParameters.AttributeInitiatorClass), "QgsPluginInstallerInstallingDialog")
6566
authcfg = repositories.all()[self.plugin["zip_repository"]]["authcfg"]
6667
if authcfg and isinstance(authcfg, str):
6768
if not QgsApplication.authManager().updateNetworkRequest(

‎src/auth/oauth2/qgsauthoauth2edit.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,6 +1119,7 @@ void QgsAuthOAuth2Edit::registerSoftStatement( const QString &registrationUrl )
11191119
bool res = false;
11201120
QByteArray json = QJsonWrapper::toJson( QVariant( mSoftwareStatement ), &res, &errStr );
11211121
QNetworkRequest registerRequest( regUrl );
1122+
QgsSetRequestInitiatorClass( registerRequest, QStringLiteral( "QgsAuthOAuth2Edit" ) );
11221123
registerRequest.setHeader( QNetworkRequest::ContentTypeHeader, QLatin1Literal( "application/json" ) );
11231124
QNetworkReply *registerReply;
11241125
// For testability: use GET if protocol is file://
@@ -1142,6 +1143,7 @@ void QgsAuthOAuth2Edit::getSoftwareStatementConfig()
11421143
QString config = leSoftwareStatementConfigUrl->text();
11431144
QUrl configUrl( config );
11441145
QNetworkRequest configRequest( configUrl );
1146+
QgsSetRequestInitiatorClass( configRequest, QStringLiteral( "QgsAuthOAuth2Edit" ) );
11451147
QNetworkReply *configReply = QgsNetworkAccessManager::instance()->get( configRequest );
11461148
mDownloading = true;
11471149
connect( configReply, &QNetworkReply::finished, this, &QgsAuthOAuth2Edit::configReplyFinished, Qt::QueuedConnection );

‎src/auth/oauth2/qgso2.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "qgsapplication.h"
2121
#include "qgsauthoauth2config.h"
2222
#include "qgslogger.h"
23+
#include "qgsnetworkaccessmanager.h"
2324

2425
#include <QDir>
2526
#include <QSettings>
@@ -230,6 +231,7 @@ void QgsO2::link()
230231

231232
QUrl url( tokenUrl_ );
232233
QNetworkRequest tokenRequest( url );
234+
QgsSetRequestInitiatorClass( tokenRequest, QStringLiteral( "QgsO2" ) );
233235
tokenRequest.setHeader( QNetworkRequest::ContentTypeHeader, QLatin1Literal( "application/x-www-form-urlencoded" ) );
234236
QNetworkReply *tokenReply = manager_->post( tokenRequest, payload );
235237

@@ -291,6 +293,7 @@ void QgsO2::onVerificationReceived( QMap<QString, QString> response )
291293
if ( !apiKey_.isEmpty() )
292294
query = QStringLiteral( "?=%1" ).arg( QString( O2_OAUTH2_API_KEY ), apiKey_ );
293295
QNetworkRequest tokenRequest( QUrl( tokenUrl_.toString() + query ) );
296+
QgsSetRequestInitiatorClass( tokenRequest, QStringLiteral( "QgsO2" ) );
294297
tokenRequest.setHeader( QNetworkRequest::ContentTypeHeader, O2_MIME_TYPE_XFORM );
295298
QMap<QString, QString> parameters;
296299
parameters.insert( O2_OAUTH2_GRANT_TYPE_CODE, code() );

‎src/core/geocms/geonode/qgsgeonoderequest.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ void QgsGeoNodeRequest::replyFinished()
185185
else
186186
{
187187
QNetworkRequest request( toUrl );
188-
188+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsGeoNodeRequest" ) );
189189
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, mForceRefresh ? QNetworkRequest::AlwaysNetwork : QNetworkRequest::PreferCache );
190190
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
191191

@@ -519,6 +519,7 @@ bool QgsGeoNodeRequest::requestBlocking( const QString &endPoint )
519519
QNetworkReply *QgsGeoNodeRequest::requestUrl( const QString &url )
520520
{
521521
QNetworkRequest request( url );
522+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsGeoNodeRequest" ) );
522523
// Add authentication check here
523524

524525
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, mForceRefresh ? QNetworkRequest::AlwaysNetwork : QNetworkRequest::PreferCache );

‎src/core/qgsabstractcontentcache.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "qgslogger.h"
2424
#include "qgsmessagelog.h"
2525
#include "qgsapplication.h"
26+
#include "qgsnetworkaccessmanager.h"
2627

2728
#include <QObject>
2829
#include <QMutex>
@@ -322,6 +323,7 @@ class CORE_EXPORT QgsAbstractContentCache : public QgsAbstractContentCacheBase
322323
mPendingRemoteUrls.insert( path );
323324
//fire up task to fetch content in background
324325
QNetworkRequest request( url );
326+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsAbstractContentCache<%1>" ).arg( mTypeString ) );
325327
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache );
326328
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
327329

‎src/core/qgsfiledownloader.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ void QgsFileDownloader::startDownload()
5151
QgsNetworkAccessManager *nam = QgsNetworkAccessManager::instance();
5252

5353
QNetworkRequest request( mUrl );
54+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsFileDownloader" ) );
5455
if ( !mAuthCfg.isEmpty() )
5556
{
5657
QgsApplication::authManager()->updateNetworkRequest( request, mAuthCfg );

‎src/core/qgsgml.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ int QgsGml::getFeatures( const QString &uri, QgsWkbTypes::Type *wkbType, QgsRect
6161
mExtent.setMinimal();
6262

6363
QNetworkRequest request( uri );
64+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsGml" ) );
65+
6466
if ( !authcfg.isEmpty() )
6567
{
6668
if ( !QgsApplication::authManager()->updateNetworkRequest( request, authcfg ) )

‎src/core/qgsnetworkaccessmanager.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,5 +450,7 @@ QgsNetworkRequestParameters::QgsNetworkRequestParameters( QNetworkAccessManager:
450450
, mOriginatingThreadId( QStringLiteral( "0x%2" ).arg( reinterpret_cast<quintptr>( QThread::currentThread() ), 2 * QT_POINTER_SIZE, 16, QLatin1Char( '0' ) ) )
451451
, mRequestId( requestId )
452452
, mContent( content )
453+
, mInitiatorClass( request.attribute( static_cast< QNetworkRequest::Attribute >( QgsNetworkRequestParameters::AttributeInitiatorClass ) ).toString() )
454+
, mInitiatorRequestId( request.attribute( static_cast< QNetworkRequest::Attribute >( QgsNetworkRequestParameters::AttributeInitiatorRequestId ) ) )
453455
{
454456
}

‎src/core/qgsnetworkaccessmanager.h

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@
2929
#include "qgis_core.h"
3030
#include "qgis_sip.h"
3131

32+
#ifndef SIP_RUN
33+
#include "qgsconfig.h"
34+
constexpr int sFilePrefixLength = CMAKE_SOURCE_DIR[sizeof( CMAKE_SOURCE_DIR ) - 1] == '/' ? sizeof( CMAKE_SOURCE_DIR ) + 1 : sizeof( CMAKE_SOURCE_DIR );
35+
36+
#define QgsSetRequestInitiatorClass(request, _class) request.setAttribute( static_cast< QNetworkRequest::Attribute >( QgsNetworkRequestParameters::AttributeInitiatorClass ), _class ); request.setAttribute( static_cast< QNetworkRequest::Attribute >( QgsNetworkRequestParameters::AttributeInitiatorRequestId ), QString( __FILE__ ).mid( sFilePrefixLength ) + ':' + QString::number( __LINE__ ) + " (" + __FUNCTION__ + ")" );
37+
#define QgsSetRequestInitiatorId(request, str) request.setAttribute( static_cast< QNetworkRequest::Attribute >( QgsNetworkRequestParameters::AttributeInitiatorRequestId ), QString( __FILE__ ).mid( sFilePrefixLength ) + ':' + QString::number( __LINE__ ) + " (" + __FUNCTION__ + "): " + str );
38+
#endif
39+
3240
/**
3341
* \class QgsNetworkRequestParameters
3442
* \ingroup core
@@ -39,6 +47,13 @@ class CORE_EXPORT QgsNetworkRequestParameters
3947
{
4048
public:
4149

50+
//! Custom request attributes
51+
enum RequestAttributes
52+
{
53+
AttributeInitiatorClass = QNetworkRequest::User + 3000, //!< Class name of original object which created the request
54+
AttributeInitiatorRequestId, //!< Internal ID used by originator object to identify requests
55+
};
56+
4257
/**
4358
* Default constructor.
4459
*/
@@ -82,13 +97,36 @@ class CORE_EXPORT QgsNetworkRequestParameters
8297
*/
8398
QByteArray content() const { return mContent; }
8499

100+
/**
101+
* Returns the class name of the object which initiated this request.
102+
*
103+
* This is only available for QNetworkRequests which have had the
104+
* QgsNetworkRequestParameters::AttributeInitiatorClass attribute set.
105+
*
106+
* \see initiatorRequestId()
107+
*/
108+
QString initiatorClassName() const { return mInitiatorClass; }
109+
110+
/**
111+
* Returns the internal ID used by the object which initiated this request to identify
112+
* individual requests.
113+
*
114+
* This is only available for QNetworkRequests which have had the
115+
* QgsNetworkRequestParameters::AttributeInitiatorRequestId attribute set.
116+
*
117+
* \see initiatorClassName()
118+
*/
119+
QVariant initiatorRequestId() const { return mInitiatorRequestId; }
120+
85121
private:
86122

87123
QNetworkAccessManager::Operation mOperation;
88124
QNetworkRequest mRequest;
89125
QString mOriginatingThreadId;
90126
int mRequestId = 0;
91127
QByteArray mContent;
128+
QString mInitiatorClass;
129+
QVariant mInitiatorRequestId;
92130
};
93131

94132
/**

‎src/providers/arcgisrest/qgsarcgisrestutils.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,7 @@ QByteArray QgsArcGisRestUtils::queryService( const QUrl &u, const QString &authc
476476
QUrl url = parseUrl( u );
477477

478478
QNetworkRequest request( url );
479+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsArcGisRestUtils" ) );
479480
for ( auto it = requestHeaders.constBegin(); it != requestHeaders.constEnd(); ++it )
480481
{
481482
request.setRawHeader( it.key().toUtf8(), it.value().toUtf8() );
@@ -1136,6 +1137,7 @@ void QgsArcGisAsyncQuery::start( const QUrl &url, QByteArray *result, bool allow
11361137
{
11371138
mResult = result;
11381139
QNetworkRequest request( url );
1140+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsArcGisAsyncQuery" ) );
11391141
if ( allowCache )
11401142
{
11411143
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache );
@@ -1161,6 +1163,7 @@ void QgsArcGisAsyncQuery::handleReply()
11611163
if ( !redirect.isNull() )
11621164
{
11631165
QNetworkRequest request = mReply->request();
1166+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsArcGisAsyncQuery" ) );
11641167
QgsDebugMsg( "redirecting to " + redirect.toUrl().toString() );
11651168
request.setUrl( redirect.toUrl() );
11661169
mReply = QgsNetworkAccessManager::instance()->get( request );
@@ -1188,6 +1191,8 @@ void QgsArcGisAsyncParallelQuery::start( const QVector<QUrl> &urls, QVector<QByt
11881191
for ( int i = 0, n = urls.size(); i < n; ++i )
11891192
{
11901193
QNetworkRequest request( urls[i] );
1194+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsArcGisAsyncParallelQuery" ) );
1195+
QgsSetRequestInitiatorId( request, QString::number( i ) );
11911196
request.setAttribute( QNetworkRequest::HttpPipeliningAllowedAttribute, true );
11921197
if ( allowCache )
11931198
{
@@ -1217,6 +1222,7 @@ void QgsArcGisAsyncParallelQuery::handleReply()
12171222
{
12181223
// Handle HTTP redirects
12191224
QNetworkRequest request = reply->request();
1225+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsArcGisAsyncParallelQuery" ) );
12201226
QgsDebugMsg( "redirecting to " + redirect.toUrl().toString() );
12211227
request.setUrl( redirect.toUrl() );
12221228
reply = QgsNetworkAccessManager::instance()->get( request );

‎src/providers/wcs/qgswcscapabilities.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ bool QgsWcsCapabilities::sendRequest( QString const &url )
130130
QgsDebugMsg( "url = " + url );
131131
mError.clear();
132132
QNetworkRequest request( url );
133+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWcsCapabilities" ) );
133134
if ( !setAuthorization( request ) )
134135
{
135136
mError = tr( "Download of capabilities failed: network request update failed for authentication config" );
@@ -347,6 +348,7 @@ void QgsWcsCapabilities::capabilitiesReplyFinished()
347348
emit statusChanged( tr( "Capabilities request redirected." ) );
348349

349350
QNetworkRequest request( redirect.toUrl() );
351+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWcsCapabilities" ) );
350352
if ( !setAuthorization( request ) )
351353
{
352354
mCapabilitiesResponse.clear();
@@ -387,6 +389,7 @@ void QgsWcsCapabilities::capabilitiesReplyFinished()
387389
{
388390
// Resend request if AlwaysCache
389391
QNetworkRequest request = mCapabilitiesReply->request();
392+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWcsCapabilities" ) );
390393
if ( request.attribute( QNetworkRequest::CacheLoadControlAttribute ).toInt() == QNetworkRequest::AlwaysCache )
391394
{
392395
QgsDebugMsg( QStringLiteral( "Resend request with PreferCache" ) );

‎src/providers/wcs/qgswcsprovider.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1626,6 +1626,7 @@ QgsWcsDownloadHandler::QgsWcsDownloadHandler( const QUrl &url, QgsWcsAuthorizati
16261626
}
16271627

16281628
QNetworkRequest request( url );
1629+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWcsDownloadHandler" ) );
16291630
if ( !mAuth.setAuthorization( request ) )
16301631
{
16311632
QgsMessageLog::logMessage( tr( "Network request update failed for authentication config" ),
@@ -1676,6 +1677,7 @@ void QgsWcsDownloadHandler::cacheReplyFinished()
16761677

16771678
QgsDebugMsg( QStringLiteral( "redirected getmap: %1" ).arg( redirect.toString() ) );
16781679
QNetworkRequest request( redirect.toUrl() );
1680+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWcsDownloadHandler" ) );
16791681
if ( !mAuth.setAuthorization( request ) )
16801682
{
16811683
QgsMessageLog::logMessage( tr( "Network request update failed for authentication config" ),
@@ -1851,6 +1853,7 @@ void QgsWcsDownloadHandler::cacheReplyFinished()
18511853
{
18521854
// Resend request if AlwaysCache
18531855
QNetworkRequest request = mCacheReply->request();
1856+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWcsDownloadHandler" ) );
18541857
if ( request.attribute( QNetworkRequest::CacheLoadControlAttribute ).toInt() == QNetworkRequest::AlwaysCache )
18551858
{
18561859
QgsDebugMsg( QStringLiteral( "Resend request with PreferCache" ) );

‎src/providers/wfs/qgswfsrequest.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ bool QgsWfsRequest::sendGET( const QUrl &url, bool synchronous, bool forceRefres
114114
QgsDebugMsgLevel( QStringLiteral( "Calling: %1" ).arg( modifiedUrl.toDisplayString( ) ), 4 );
115115

116116
QNetworkRequest request( modifiedUrl );
117+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWfsRequest" ) );
117118
if ( !mUri.auth().setAuthorization( request ) )
118119
{
119120
mErrorCode = QgsWfsRequest::NetworkError;
@@ -252,6 +253,7 @@ bool QgsWfsRequest::sendPOST( const QUrl &url, const QString &contentTypeHeader,
252253
}
253254

254255
QNetworkRequest request( url );
256+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWfsRequest" ) );
255257
if ( !mUri.auth().setAuthorization( request ) )
256258
{
257259
mErrorCode = QgsWfsRequest::NetworkError;
@@ -336,6 +338,7 @@ void QgsWfsRequest::replyFinished()
336338
else
337339
{
338340
QNetworkRequest request( toUrl );
341+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWfsRequest" ) );
339342
if ( !mUri.auth().setAuthorization( request ) )
340343
{
341344
mResponse.clear();

‎src/providers/wms/qgswmscapabilities.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1948,6 +1948,7 @@ bool QgsWmsCapabilitiesDownload::downloadCapabilities()
19481948
mError.clear();
19491949

19501950
QNetworkRequest request( url );
1951+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWmsCapabilitiesDownload" ) );
19511952
if ( !mAuth.setAuthorization( request ) )
19521953
{
19531954
mError = tr( "Download of capabilities failed: network request update failed for authentication config" );
@@ -2016,6 +2017,7 @@ void QgsWmsCapabilitiesDownload::capabilitiesReplyFinished()
20162017
else
20172018
{
20182019
QNetworkRequest request( toUrl );
2020+
QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWmsCapabilitiesDownload" ) );
20192021
if ( !mAuth.setAuthorization( request ) )
20202022
{
20212023
mHttpCapabilitiesResponse.clear();

0 commit comments

Comments
 (0)
Please sign in to comment.