| Index: printing/backend/print_backend_cups.cc
|
| ===================================================================
|
| --- printing/backend/print_backend_cups.cc (revision 119116)
|
| +++ printing/backend/print_backend_cups.cc (working copy)
|
| @@ -59,23 +59,31 @@
|
|
|
| private:
|
| void Init() {
|
| + const char* kGnuTlsFiles[] = {
|
| + "libgnutls.so.28",
|
| + "libgnutls.so.26",
|
| + "libgnutls.so",
|
| + };
|
| gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
|
| - const char* kGnuTlsFile = "libgnutls.so";
|
| - void* gnutls_lib = dlopen(kGnuTlsFile, RTLD_NOW);
|
| - if (!gnutls_lib) {
|
| - LOG(ERROR) << "Cannot load " << kGnuTlsFile;
|
| + for (size_t i = 0; i < arraysize(kGnuTlsFiles); ++i) {
|
| + void* gnutls_lib = dlopen(kGnuTlsFiles[i], RTLD_NOW);
|
| + if (!gnutls_lib) {
|
| + VLOG(1) << "Cannot load " << kGnuTlsFiles[i];
|
| + continue;
|
| + }
|
| + const char* kGnuTlsInitFuncName = "gnutls_global_init";
|
| + int (*pgnutls_global_init)(void) = reinterpret_cast<int(*)()>(
|
| + dlsym(gnutls_lib, kGnuTlsInitFuncName));
|
| + if (!pgnutls_global_init) {
|
| + VLOG(1) << "Could not find " << kGnuTlsInitFuncName
|
| + << " in " << kGnuTlsFiles[i];
|
| + continue;
|
| + }
|
| + if ((*pgnutls_global_init)() != 0)
|
| + LOG(ERROR) << "gnutls_global_init() failed";
|
| return;
|
| }
|
| - const char* kGnuTlsInitFuncName = "gnutls_global_init";
|
| - int (*pgnutls_global_init)(void) = reinterpret_cast<int(*)()>(
|
| - dlsym(gnutls_lib, kGnuTlsInitFuncName));
|
| - if (!pgnutls_global_init) {
|
| - LOG(ERROR) << "Could not find " << kGnuTlsInitFuncName
|
| - << " in " << kGnuTlsFile;
|
| - return;
|
| - }
|
| - if ((*pgnutls_global_init)() != 0)
|
| - LOG(ERROR) << "Gnutls initialization failed";
|
| + LOG(ERROR) << "Cannot find libgnutls";
|
| }
|
| };
|
|
|
|
|