Frage

Ich bin versucht, eine Anwendung zu schreiben, die libCurl anweisen verwendet, um Seife Anforderungen an einen sicheren Web-Service zu veröffentlichen. Diese Windows-Anwendung ist gebaut gegen libCurl anweisen Version 7.19.0, die wiederum gegen OpenSSL-0.9.8i gebaut wird. Der zugehörige curl bezogenen Code folgt:

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);
}

Wenn ich die URL auszuführen versuchen, Locke gibt einen CURLE_OUT_OF_MEMORY Fehler, die zu einem Ausfall verwandt zu sein scheint ein SSL-Kontext zuzuordnen. Hat jemand dieses Problem begegnet vor?

War es hilfreich?

Lösung 2

Nach einer weiteren Untersuchung fand ich, dass dieser Fehler aufgrund eines Fehlers war die OpenSSL-Bibliothek durch den Aufruf SSL_library_init () zu initialisieren.

Andere Tipps

Ich hatte das gleiche Problem, nur dachte ich die Notiz hinzufügen würde, die eher als den OpenSSL-Export Aufruf SSL_library_init direkt kann es durch Zugabe der Flagge CURL_GLOBAL_SSL auf curl_global_init

stieß ich auf das gleiche Symptom nach 16.04 zu Ubuntu Upgrade wie in diese Antwort beschrieben. Die Lösung war die Verwendung von TLS wie so.

curl_easy_setopt(curl_, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2));

Offenbar SSLv3 deaktiviert wurde auf Ubuntu 16.04.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top