【问题标题】:"CURLE_OUT_OF_MEMORY" error when posting via https通过 https 发布时出现“CURLE_OUT_OF_MEMORY”错误
【发布时间】:2008-10-03 12:40:14
【问题描述】:

我正在尝试编写一个使用 libCurl 将肥皂请求发布到安全 Web 服务的应用程序。此 Windows 应用程序是针对 libCurl 版本 7.19.0 构建的,而 libCurl 版本又是针对 openssl-0.9.8i 构建的。相关curl相关代码如下:

文件 *input_file = fopen(current->post_file_name.c_str(), "rb"); 文件 *output_file = fopen(current->results_file_name.c_str(), "wb"); 如果(输入文件 && 输出文件) { 结构 curl_slist *header_opts = 0; CURLcode rcd; header_opts = curl_slist_append(header_opts, "内容类型: application/soap+xml; charset=utf8"); curl_easy_reset(curl_handle); curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1); curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, output_file); curl_easy_setopt(curl_handle, CURLOPT_READDATA, input_file); curl_easy_setopt(curl_handle, CURLOPT_URL, fs_service_url); curl_easy_setopt(curl_handle, CURLOPT_POST, 1); curl_easy_setopt(curl_handle, CURLOPT_HTTPHEADER, header_opts); rcd = curl_easy_perform(curl_handle); 如果(rcd!= 0) { 当前->curl_result = rcd; 当前->curl_error = curl_easy_strerror(rcd); } curl_slist_free_all(header_opts); }

当我尝试执行 URL 时,curl 返回一个 CURLE_OUT_OF_MEMORY 错误,这似乎与分配 SSL 上下文失败有关。有没有其他人遇到过这个问题?

【问题讨论】:

    标签: c++ curl https openssl


    【解决方案1】:

    我有同样的问题,只是想添加注释,而不是直接调用 OpenSsl 导出 SSL_library_init 它可以通过将标志 CURL_GLOBAL_SSL 添加到 curl_global_init 来修复

    【讨论】:

      【解决方案2】:

      经过进一步调查,我发现这个错误是由于调用 SSL_library_init() 初始化 openSSL 库失败造成的。

      【讨论】:

        【解决方案3】:

        我在升级到 Ubuntu 16.04 后遇到了相同的症状,如 this answer 中所述。解决方案是像这样使用 TLS。

        curl_easy_setopt(curl_, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2));
        

        显然是 Ubuntu 16.04 上的 SSLv3 was disabled

        【讨论】:

          猜你喜欢
          • 2011-07-10
          • 1970-01-01
          • 2018-04-02
          • 1970-01-01
          • 2021-05-10
          • 1970-01-01
          • 2021-08-29
          • 2023-03-18
          • 1970-01-01
          相关资源
          最近更新 更多