2525#include < QSslConfiguration>
2626#include < QSslError>
2727#endif
28+ #include < QMutexLocker>
2829
2930#include " qgsauthcertutils.h"
3031#include " qgsauthmanager.h"
3334static const QString AUTH_METHOD_KEY = " Identity-Cert" ;
3435static const QString AUTH_METHOD_DESCRIPTION = " Identity certificate authentication" ;
3536
36- QMap<QString, QgsPkiConfigBundle *> QgsAuthIdentCertMethod::mPkiConfigBundleCache = QMap<QString, QgsPkiConfigBundle *>();
37+ QMap<QString, QgsPkiConfigBundle *> QgsAuthIdentCertMethod::sPkiConfigBundleCache = QMap<QString, QgsPkiConfigBundle *>();
3738
3839
3940QgsAuthIdentCertMethod::QgsAuthIdentCertMethod ()
@@ -51,8 +52,9 @@ QgsAuthIdentCertMethod::QgsAuthIdentCertMethod()
5152
5253QgsAuthIdentCertMethod::~QgsAuthIdentCertMethod ()
5354{
54- qDeleteAll ( mPkiConfigBundleCache );
55- mPkiConfigBundleCache .clear ();
55+ QMutexLocker locker ( &mConfigMutex );
56+ qDeleteAll ( sPkiConfigBundleCache );
57+ sPkiConfigBundleCache .clear ();
5658}
5759
5860QString QgsAuthIdentCertMethod::key () const
@@ -220,12 +222,13 @@ void QgsAuthIdentCertMethod::updateMethodConfig( QgsAuthMethodConfig &mconfig )
220222
221223QgsPkiConfigBundle *QgsAuthIdentCertMethod::getPkiConfigBundle ( const QString &authcfg )
222224{
223- QgsPkiConfigBundle * bundle = nullptr ;
225+ QMutexLocker locker ( &mConfigMutex );
226+ QgsPkiConfigBundle *bundle = nullptr ;
224227
225228 // check if it is cached
226- if ( mPkiConfigBundleCache .contains ( authcfg ) )
229+ if ( sPkiConfigBundleCache .contains ( authcfg ) )
227230 {
228- bundle = mPkiConfigBundleCache .value ( authcfg );
231+ bundle = sPkiConfigBundleCache .value ( authcfg );
229232 if ( bundle )
230233 {
231234 QgsDebugMsg ( QString ( " Retrieved PKI bundle for authcfg %1" ).arg ( authcfg ) );
@@ -264,6 +267,7 @@ QgsPkiConfigBundle *QgsAuthIdentCertMethod::getPkiConfigBundle( const QString &a
264267
265268 bundle = new QgsPkiConfigBundle ( mconfig, clientcert, clientkey );
266269
270+ locker.unlock ();
267271 // cache bundle
268272 putPkiConfigBundle ( authcfg, bundle );
269273
@@ -272,15 +276,17 @@ QgsPkiConfigBundle *QgsAuthIdentCertMethod::getPkiConfigBundle( const QString &a
272276
273277void QgsAuthIdentCertMethod::putPkiConfigBundle ( const QString &authcfg, QgsPkiConfigBundle *pkibundle )
274278{
279+ QMutexLocker locker ( &mConfigMutex );
275280 QgsDebugMsg ( QString ( " Putting PKI bundle for authcfg %1" ).arg ( authcfg ) );
276- mPkiConfigBundleCache .insert ( authcfg, pkibundle );
281+ sPkiConfigBundleCache .insert ( authcfg, pkibundle );
277282}
278283
279284void QgsAuthIdentCertMethod::removePkiConfigBundle ( const QString &authcfg )
280285{
281- if ( mPkiConfigBundleCache .contains ( authcfg ) )
286+ QMutexLocker locker ( &mConfigMutex );
287+ if ( sPkiConfigBundleCache .contains ( authcfg ) )
282288 {
283- QgsPkiConfigBundle * pkibundle = mPkiConfigBundleCache .take ( authcfg );
289+ QgsPkiConfigBundle * pkibundle = sPkiConfigBundleCache .take ( authcfg );
284290 delete pkibundle;
285291 pkibundle = nullptr ;
286292 QgsDebugMsg ( QString ( " Removed PKI bundle for authcfg: %1" ).arg ( authcfg ) );
0 commit comments