]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw ldap: move conditional LDAPEngine init into it's ctor 25796/head
authorMatt Benjamin <mbenjamin@redhat.com>
Fri, 4 Jan 2019 21:25:16 +0000 (16:25 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Fri, 4 Jan 2019 22:11:05 +0000 (17:11 -0500)
rgw::auth::ExternalAuthStrategy defines an LDAPEngine in a
ctor-initializer list, making it too late to conditionally initialize
-it- in ExternalAuthStrategy's ctor.

Fixes: https://tracker.ceph.com/issues/24228
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/rgw_auth_s3.h
src/rgw/rgw_rest_s3.cc
src/rgw/rgw_rest_s3.h

index d848d917136203b657c7cb2f116ab990962be170..43fbbb52e3af50d135db4d9dfeb7654e065ae4bf 100644 (file)
@@ -133,8 +133,7 @@ public:
 
     }
 
-    if (cct->_conf->rgw_s3_auth_use_ldap &&
-        ! cct->_conf->rgw_ldap_uri.empty()) {
+    if (ldap_engine.valid()) {
       add_engine(Control::SUFFICIENT, ldap_engine);
     }
   }
index ed3a819af094e63fe00e4d7fa66e670efeb55633..9757b1d11dd3bc382a388e1a469dece4f47c3154 100644 (file)
@@ -4214,6 +4214,11 @@ std::mutex rgw::auth::s3::LDAPEngine::mtx;
 
 void rgw::auth::s3::LDAPEngine::init(CephContext* const cct)
 {
+  if (! cct->_conf->rgw_s3_auth_use_ldap ||
+      ! cct->_conf->rgw_ldap_uri.empty()) {
+    return;
+  }
+
   if (! ldh) {
     std::lock_guard<std::mutex> lck(mtx);
     if (! ldh) {
@@ -4233,6 +4238,11 @@ void rgw::auth::s3::LDAPEngine::init(CephContext* const cct)
   }
 }
 
+bool rgw::auth::s3::LDAPEngine::valid() {
+  std::lock_guard<std::mutex> lck(mtx);
+  return (!!ldh);
+}
+
 rgw::auth::RemoteApplier::acl_strategy_t
 rgw::auth::s3::LDAPEngine::get_acl_strategy() const
 {
index c425f97c7f3c01b3d33beacfbfd400713233c021..feec1d9d172673ae8bdfee9f00fc43abf486ea23 100644 (file)
@@ -856,6 +856,7 @@ public:
     return "rgw::auth::s3::LDAPEngine";
   }
 
+  static bool valid();
   static void shutdown();
 };