Index: net/http/http_auth_gssapi_posix.cc |
diff --git a/net/http/http_auth_gssapi_posix.cc b/net/http/http_auth_gssapi_posix.cc |
index b20ef50d550d01401e4c0e9656fad844ccb80d21..bd2734f4a29a0cfdb5911a92d4565605034300ba 100644 |
--- a/net/http/http_auth_gssapi_posix.cc |
+++ b/net/http/http_auth_gssapi_posix.cc |
@@ -11,7 +11,6 @@ |
#include "base/file_path.h" |
#include "base/format_macros.h" |
#include "base/logging.h" |
-#include "base/singleton.h" |
#include "base/string_util.h" |
#include "base/stringprintf.h" |
#include "net/base/net_errors.h" |
@@ -385,8 +384,9 @@ std::string DescribeContext(GSSAPILibrary* gssapi_lib, |
} // namespace |
-GSSAPISharedLibrary::GSSAPISharedLibrary() |
+GSSAPISharedLibrary::GSSAPISharedLibrary(const std::string& gssapi_library_name) |
: initialized_(false), |
+ gssapi_library_name_(gssapi_library_name), |
gssapi_library_(NULL), |
import_name_(NULL), |
release_name_(NULL), |
@@ -422,19 +422,29 @@ bool GSSAPISharedLibrary::InitImpl() { |
} |
base::NativeLibrary GSSAPISharedLibrary::LoadSharedLibrary() { |
- static const char* kLibraryNames[] = { |
+ const char** library_names; |
+ size_t num_lib_names; |
+ const char* user_specified_library[1]; |
+ if (!gssapi_library_name_.empty()) { |
+ user_specified_library[0] = gssapi_library_name_.c_str(); |
+ library_names = user_specified_library; |
+ num_lib_names = 1; |
+ } else { |
+ static const char* kDefaultLibraryNames[] = { |
#if defined(OS_MACOSX) |
- "libgssapi_krb5.dylib" // MIT Kerberos |
+ "libgssapi_krb5.dylib" // MIT Kerberos |
#else |
- "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian |
- "libgssapi.so.4", // Heimdal - Suse10, MDK |
- "libgssapi.so.1" // Heimdal - Suse9, CITI - FC, MDK, Suse10 |
+ "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian |
+ "libgssapi.so.4", // Heimdal - Suse10, MDK |
+ "libgssapi.so.1" // Heimdal - Suse9, CITI - FC, MDK, Suse10 |
#endif |
- }; |
- static size_t num_lib_names = arraysize(kLibraryNames); |
+ }; |
+ library_names = kDefaultLibraryNames; |
+ num_lib_names = arraysize(kDefaultLibraryNames); |
+ } |
for (size_t i = 0; i < num_lib_names; ++i) { |
- const char* library_name = kLibraryNames[i]; |
+ const char* library_name = library_names[i]; |
FilePath file_path(library_name); |
base::NativeLibrary lib = base::LoadNativeLibrary(file_path); |
if (lib) { |
@@ -613,9 +623,6 @@ OM_uint32 GSSAPISharedLibrary::inquire_context( |
locally_initiated, |
open); |
} |
-GSSAPILibrary* GSSAPILibrary::GetDefault() { |
- return Singleton<GSSAPISharedLibrary>::get(); |
-} |
ScopedSecurityContext::ScopedSecurityContext(GSSAPILibrary* gssapi_lib) |
: security_context_(GSS_C_NO_CONTEXT), |