سؤال

وأنا محاولة لكتابة تطبيق يستخدم يبكورل للنشر طلبات الصابون لخدمة الويب الآمنة. تم بناء هذا التطبيق ويندوز ضد يبكورل نسخة 7.19.0 الذي، بدوره، هو مبني على بينسل-0.9.8i. رمز ذات الصلة حليقة المتعلقة يلي:

<اقتباس فقرة>
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);
}

وعندما أحاول تنفيذ URL، حليقة بإرجاع خطأ CURLE_OUT_OF_MEMORY التي يبدو أن لها صلة إلى عدم تخصيص السياق SSL. وقد أي شخص آخر واجهت هذه المشكلة من قبل؟

هل كانت مفيدة؟

المحلول 2

وبعد إجراء مزيد من التحقيق، وجدت أن هذا الخطأ كان بسبب عدم التهيئة مكتبة OpenSSL بالدعوة SSL_library_init ().

نصائح أخرى

وكان لي نفس المشكلة، بس كنت أضيف ملاحظة أنه بدلا من استدعاء تصدير بينسل SSL_library_init مباشرة يمكن ان تكون ثابتة عن طريق إضافة CURL_GLOBAL_SSL العلم <لأ href = "http://curl.haxx.se /libcurl/c/curl_global_init.html">curl_global_init

وأنا واجهت نفس الأعراض بعد الترقية إلى أوبونتو 16.04 كما هو موضح في هذه الإجابة . وكان الحل لاستخدام TLS مثل ذلك.

curl_easy_setopt(curl_, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2));

وعلى ما يبدو كان أنظمة SSLv3 المعوقين على أوبونتو 16.04.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top