2 дня мудохался с ошибками Could not load SSL library и Error connecting with ssl
весь интернет перерыл, обновился до 9.0.50, попробовал кучу всяких dll от openssl и собранных только для Indy, оставалось только на 10ку перейти, потом купить типа саму среду и весь тот бред что советуют в тырнетах
Суть проблемы в совместимости библиотек ssleay32.dll и libeay32.dll с Indy 9 в большинстве случаев с IdSSLOpenSSLHeaders.pas (частично наверное и IdSSLOpenSSL), в котором есть кривая функция Load, подгружающая эти библиотеки и проверяющая их "версию" (тестирование указателей на нахождение функций в либах). Поскольку функций там тьма, где в какой версии либ реализовано хрен поймешь, при отсутствии их естественно вываливается 1 ошибка, однако с подсунутыми валится вторая, но заметил особенность случайно - если либ нету на машине после получения первой ошибки подсовываем при запущенном EXE имеющие DLL и видим вдруг не с того не с сего - GET проходит, чудиса!? перезапускаем прогу - хертам, 2ая ошибка
лезем в эту Load и видим вот такую ересь
if hIdCrypto = 0 then hIdCrypto := LoadLibrary(SSLCLIB_DLL_name);
If hIdSSL = 0 Then hIdSSL := LoadLibrary(SSL_DLL_name) else exit;
@IdSslCtxSetCipherList := LoadFunction(fn_SSL_CTX_set_cipher_list);
@IdSslCtxNew := LoadFunction(fn_SSL_CTX_new);
@IdSslCtxFree := LoadFunction(fn_SSL_CTX_free);
и бла бла бла
и в конце
result :=
(@IdSslCtxSetCipherList<>nil) and
(@IdSslCtxNew<>nil) and
и тады
т.е. либа грузится, а потом начинается херня по ее проверке, хедеры при этом не освобождаются, но и доступа снаружи до этого бреда нет
вариант использованный мной следующий - поскольку мне не нужен весь функционах из хрен пойми какой либы подо что то собранный, просто напросто после инициализации всех переменных до гетов с постами делаю
IdSSLOpenSSLHeaders.Load
И ВСЕ!!! никаких версий не ищу, чужие исходники не правлю, если где вывалится дальше ошибка какой то функции нет - отдельно задебажу