SLL Indy 9 vs D7

wolverin
Дата: 10.07.2019 09:53:31
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

И ВСЕ!!! никаких версий не ищу, чужие исходники не правлю, если где вывалится дальше ошибка какой то функции нет - отдельно задебажу
wolverin
Дата: 10.07.2019 09:58:17
wolverin,

SSL конечно же, звиняйте
вопщим так для истории, кому немного допилить надо старые проги без тупых советов по обновлению
wolverin
Дата: 10.07.2019 10:05:40
если что откель брал инди и длл
https://indy.fulgan.com/
wolverin
Дата: 10.07.2019 10:15:06
а ну еще указывать надо SSLOptions.Method := sslvSSLv23;
wolverin
Дата: 10.07.2019 10:20:21
мож кому вариант патча пригодится
http://www.cyberforum.ru/post4978037.html

мне не помогло )
Cobalt747
Дата: 10.07.2019 10:36:43
wolverin,

там есть такая функция IdSSLOpenSSLHeaders.WhichFailedToLoad
wolverin
Дата: 10.07.2019 10:39:10
Cobalt747,

есть, но перебирать и дальше дллки искать какую же надо нет никакого желания, в ручную делаете Load погнали дальше до ошибки
wolverin
Дата: 10.07.2019 10:40:09
wolverin
до ошибки

которой скорее всего и не будет
Кроик Семён
Дата: 10.07.2019 11:00:36
wolverin,

проект большой или в начале?
если что (ну тупик то есть), переходите на Synapse :)
wolverin
Дата: 10.07.2019 11:01:49
Кроик Семён,

проект вообще лохматых годов, надо всего лишь json отправлять на https