File qt-4.7.3-fix-loading-openssl.patch of Package mingw32-libqt4
diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
index 50c1e72..9c3fcba 100644
--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -369,18 +369,31 @@ static QPair<QSystemLibrary*, QSystemLibrary*> loadOpenSslWin32()
pair.first = 0;
pair.second = 0;
- QSystemLibrary *ssleay32 = new QSystemLibrary(QLatin1String("ssleay32"));
+ QSystemLibrary *ssleay32 = new QSystemLibrary(QLatin1String("libssl-OPENSSL_SONAME"));
if (!ssleay32->load(false)) {
- // Cannot find ssleay32.dll
+ // Cannot find libssl-OPENSSL_SONAME.dll
+ // in our cross-build that's the same as ssleay32.dll
delete ssleay32;
- return pair;
+ ssleay32 = new QSystemLibrary(QLatin1String("ssleay32"));
+ if (!ssleay32->load(false)) {
+ // Cannot find ssleay32.dll
+ delete ssleay32;
+ return pair;
+ }
}
- QSystemLibrary *libeay32 = new QSystemLibrary(QLatin1String("libeay32"));
+ QSystemLibrary *libeay32 = new QSystemLibrary(QLatin1String("libcrypto-OPENSSL_SONAME"));
if (!libeay32->load(false)) {
- delete ssleay32;
+ // Cannot find libcrypto-OPENSSL_SONAME.dll
+ // in our cross-build that's the same as libeay32.dll
delete libeay32;
- return pair;
+ libeay32 = new QSystemLibrary(QLatin1String("libeay32"));
+ if (!libeay32->load(false)) {
+ // Cannot find libeay32.dll
+ delete libeay32;
+ delete ssleay32;
+ return pair;
+ }
}
pair.first = ssleay32;
@@ -570,7 +583,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(RSA_free, 1450, libs.second )
RESOLVEFUNC(sk_free, 2571, libs.second )
RESOLVEFUNC(sk_num, 2576, libs.second )
- RESOLVEFUNC(sk_pop_free, 2578, libs.second )
+ RESOLVEFUNC(sk_pop_free, 2578, libs.second )
RESOLVEFUNC(sk_value, 2585, libs.second )
RESOLVEFUNC(SSL_CIPHER_description, 11, libs.first )
RESOLVEFUNC(SSL_CTX_check_private_key, 21, libs.first )