& # 8220; CURLE_OUT_OF_MEMORY & # 8221; errore durante la pubblicazione tramite https

StackOverflow https://stackoverflow.com/questions/166617

  •  03-07-2019
  •  | 
  •  

Domanda

Sto tentando di scrivere un'applicazione che utilizza libCurl per inviare richieste soap a un servizio Web sicuro. Questa applicazione Windows è costruita contro libCurl versione 7.19.0 che, a sua volta, è costruita su openssl-0.9.8i. Segue il codice relativo all'arricciatura pertinente:

FILE *input_file = fopen(current->post_file_name.c_str(), "rb");
FILE *output_file = fopen(current->results_file_name.c_str(), "wb");
if(input_file && output_file)
{
    struct curl_slist *header_opts = 0;
    CURLcode rcd;

    header_opts = curl_slist_append(header_opts, "Content-Type: 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);
    if(rcd != 0)
    {
        current->curl_result = rcd;
        current->curl_error = curl_easy_strerror(rcd);
    }
    curl_slist_free_all(header_opts);
}

Quando tento di eseguire l'URL, curl restituisce un errore CURLE_OUT_OF_MEMORY che sembra essere correlato a un errore nell'allocare un contesto SSL. Qualcun altro ha riscontrato questo problema prima?

È stato utile?

Soluzione 2

Dopo ulteriori indagini, ho scoperto che questo errore era dovuto a un errore nell'inizializzazione della libreria openSSL chiamando SSL_library_init ().

Altri suggerimenti

Ho avuto lo stesso problema, ho pensato di aggiungere la nota che invece di chiamare direttamente l'esportazione OpenSsl SSL_library_init può essere risolto aggiungendo il flag CURL_GLOBAL_SSL a curl_global_init

Ho riscontrato lo stesso sintomo dopo l'aggiornamento a Ubuntu 16.04 come descritto in questa risposta . La soluzione era usare TLS in questo modo.

curl_easy_setopt(curl_, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2));

Apparentemente SSLv3 è stato disabilitato su Ubuntu 16.04.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top