Почему curl_global_cleanup будет чистить среду ssl? - PullRequest
0 голосов
/ 05 ноября 2018

Функция libcurl curl_global_cleanup вызовет EVP_cleanup, она очистит всю среду ssl, поэтому другой модуль этой программы не сможет использовать ssl, например. Алгоритм md5. Так, когда я могу использовать curl_global_cleanup?

1 Ответ

0 голосов
/ 09 ноября 2018

libcurl инициализирует и очищает все свои действия и все сторонние библиотеки, когда вы вызываете его глобальные функции init / cleanup. Потому что это то, что они задокументировали, в противном случае другие пользователи будут жаловаться на утечки памяти.

Если вы используете OpenSSL самостоятельно, вы должны самостоятельно инициировать его, чтобы потом вам также пришлось его очищать, и OpenSSL должен справиться с этим просто отлично (что традиционно со временем не всегда было правдой).

В качестве альтернативы (это скорее своего рода обходной путь, чем правильное "исправление"), вы просто убедитесь, что вызов curl_global_cleanup перемещен так, чтобы он происходил задолго после вашего последнего использования OpenSSL.

...