瀏覽代碼

Merge branch 'candidate-5.6.4' into candidate-6.0.0

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 9 年之前
父節點
當前提交
357d817591
共有 3 個文件被更改,包括 45 次插入23 次删除
  1. 7 0
      cmake_modules/FindLIBXML2.cmake
  2. 13 5
      lib2/CMakeLists.txt
  3. 25 18
      system/security/LdapSecurity/ldapconnection.cpp

+ 7 - 0
cmake_modules/FindLIBXML2.cmake

@@ -58,6 +58,13 @@ if (NOT LIBXML2_FOUND)
     LIBXML2_LIBRARIES 
     LIBXML2_INCLUDE_DIR
   )
+
+  IF (LIBXML2_FOUND AND APPLE)
+     STRING(REPLACE "libxml2" "liblzma"  LIBXML2_EXTRA "${LIBXML2_LIBRARIES}")
+     STRING(REPLACE "libxml2" "libiconv" LIBXML2_EXTRA2 "${LIBXML2_LIBRARIES}")
+     set (LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} "${LIBXML2_EXTRA}" "${LIBXML2_EXTRA2}" )
+  ENDIF()
+
   MARK_AS_ADVANCED(LIBXML2_INCLUDE_DIR LIBXML2_LIBRARIES)
 ENDIF()
 

+ 13 - 5
lib2/CMakeLists.txt

@@ -23,6 +23,9 @@ if (APPLE)
     list(APPEND DYLIBS ${XALAN_LIBRARIES})
     list(APPEND DYLIBS ${XERCES_LIBRARIES})
     list(APPEND DYLIBS ${BINUTILS_LIBRARIES})
+    list(APPEND DYLIBS ${OPENSSL_LIBRARIES})
+    list(APPEND DYLIBS ${ZLIB_LIBRARIES})
+    list(APPEND DYLIBS ${LIBXML2_LIBRARIES})
 elseif (WIN32)
     #TODO:  Should find these dlls not assume them.
     if (NOT USE_NATIVE_LIBRARIES)
@@ -84,11 +87,6 @@ foreach(dylib ${DYLIBS})
             set(fixupCommand "${fixupCommand}\r\nexecute_process(COMMAND install_name_tool -change \"${dylib_48_path}\" \"@loader_path/../lib2/${dylib_name_ext}\" \${file})")
         endif ()
 
-        string(REPLACE ".51.2.dylib" ".51.dylib" dylib_51_path "${dylib_path}")
-        if (NOT "${dylib_51_path}" STREQUAL "${dylib_path}")
-            set(fixupCommand "${fixupCommand}\r\nexecute_process(COMMAND install_name_tool -change \"${dylib_51_path}\" \"@loader_path/../lib2/${dylib_name_ext}\" \${file})")
-        endif ()
-
         string(REPLACE ".110.0.dylib" ".dylib" dylib_110_path "${dylib_path}")
         if (NOT "${dylib_110_path}" STREQUAL "${dylib_path}")
             set(fixupCommand "${fixupCommand}\r\nexecute_process(COMMAND install_name_tool -change \"${dylib_110_path}\" \"@loader_path/../lib2/${dylib_name_ext}\" \${file})")
@@ -99,6 +97,16 @@ foreach(dylib ${DYLIBS})
             set(fixupCommand "${fixupCommand}\r\nexecute_process(COMMAND install_name_tool -change \"${dylib_51_path}\" \"@loader_path/../lib2/${dylib_name_ext}\" \${file})")
         endif ()
 
+        string(REPLACE ".55.1.dylib" ".55.dylib" dylib_55_path "${dylib_path}")
+        if (NOT "${dylib_55_path}" STREQUAL "${dylib_path}")
+            set(fixupCommand "${fixupCommand}\r\nexecute_process(COMMAND install_name_tool -change \"${dylib_55_path}\" \"@loader_path/../lib2/${dylib_name_ext}\" \${file})")
+        endif ()
+
+        string(REPLACE ".1.2.8.dylib" ".1.dylib" dylib_1_path "${dylib_path}")
+        if (NOT "${dylib_1_path}" STREQUAL "${dylib_path}")
+            set(fixupCommand "${fixupCommand}\r\nexecute_process(COMMAND install_name_tool -change \"${dylib_1_path}\" \"@loader_path/../lib2/${dylib_name_ext}\" \${file})")
+        endif ()
+
         install(CODE "
             file(GLOB files \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${EXEC_DIR}/*\" \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${LIB_DIR}/*.dylib\" \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/plugins/*.dylib\" \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/lib2/*.dylib\")
             foreach(file \${files})

+ 25 - 18
system/security/LdapSecurity/ldapconnection.cpp

@@ -1318,6 +1318,7 @@ static __int64 getMaxPwdAge(Owned<ILdapConnectionPool> _conns, const char * _bas
     return maxPwdAge;
 }
 
+static CriticalSection  lcCrit;
 class CLdapClient : public CInterface, implements ILdapClient
 {
 private:
@@ -1349,28 +1350,34 @@ public:
         m_pp = pp;
         if(m_ldapconfig->getServerType() == OPEN_LDAP)
         {
-            try
-            {
-                addDC(m_ldapconfig->getBasedn());
-            }
-            catch(...)
-            {
-            }
-            try
+            static bool createdOU = false;
+            CriticalBlock block(lcCrit);
+            if (!createdOU)
             {
+                try
+                {
+                    addDC(m_ldapconfig->getBasedn());
+                }
+                catch(...)
+                {
+                }
+                try
+                {
                 addGroup("Directory Administrators", NULL, NULL, m_ldapconfig->getBasedn());
+                }
+                catch(...)
+                {
+                }
             }
-            catch(...)
-            {
-            }
-        }
-        createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_DEFAULT), PT_ADMINISTRATORS_ONLY);
-        createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_FILE_SCOPE), PT_ADMINISTRATORS_ONLY);
-        createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_WORKUNIT_SCOPE), PT_ADMINISTRATORS_ONLY);
-        createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_SUDOERS), PT_ADMINISTRATORS_ONLY);
+            createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_DEFAULT), PT_ADMINISTRATORS_ONLY);
+            createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_FILE_SCOPE), PT_ADMINISTRATORS_ONLY);
+            createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_WORKUNIT_SCOPE), PT_ADMINISTRATORS_ONLY);
+            createLdapBasedn(NULL, m_ldapconfig->getResourceBasedn(RT_SUDOERS), PT_ADMINISTRATORS_ONLY);
 
-        createLdapBasedn(NULL, m_ldapconfig->getUserBasedn(), PT_ADMINISTRATORS_ONLY);
-        createLdapBasedn(NULL, m_ldapconfig->getGroupBasedn(), PT_ADMINISTRATORS_ONLY);
+            createLdapBasedn(NULL, m_ldapconfig->getUserBasedn(), PT_ADMINISTRATORS_ONLY);
+            createLdapBasedn(NULL, m_ldapconfig->getGroupBasedn(), PT_ADMINISTRATORS_ONLY);
+            createdOU = true;
+        }
     }
 
     virtual LdapServerType getServerType()