Инициализация SSL и libcurl и «нехватка памяти»
Я намерен делать запросы https с помощью libcurl и openssl с помощью программы на C ++.
Я инициализировал libcurl сcurl_global_init(CURL_GLOBAL_ALL)
как описано в документации. Тогда я используюcurl_easy
обработать, что я инициализирую, заполнить заголовками и телом, и отправить все в ´https://example.com:443/foo'. Это работает для не-https соединений.
Оглядываться Я обнаружил, что могут быть другие библиотеки, которые уже получают контекст SSL, из-за чего libcurl не может сделать именно это. Я получаю следующее сообщение об ошибке:
curl_easy_perform failed: Out of memory
В моем случае я используюlibmicrohttpd который я инициализирую
mhdDaemon = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION | MHD_USE_SSL,
htons(port),
NULL,
NULL,
connectionTreat, NULL,
MHD_OPTION_HTTPS_MEM_KEY, httpsKey,
MHD_OPTION_HTTPS_MEM_CERT, httpsCertificate,
MHD_OPTION_CONNECTION_MEMORY_LIMIT, memoryLimit,
MHD_OPTION_SOCK_ADDR, (struct sockaddr*) &sad,
MHD_OPTION_NOTIFY_COMPLETED, requestCompleted, NULL,
MHD_OPTION_END);
Так что я действительно использую openSSL где-то еще. Дело в том, если я достануMHD_USE_SSL
часть это не решает проблему.
Это список библиотек, которые связаны с приложением (я использую cmake):
-lmicrohttpd
-lmongoclient
-lboost_thread
-lboost_filesystem
-lboost_system
-lpthread
Есть ли другие, которые могут загружать SSL? Microhttpd загружает его в любом случае, даже если я закомментируюMHD_USE_SSL
флаг (плюс все другие связанные флаги)? Может ли быть какая-либо другая причина этой ошибки?