https

2008-10-03 21 views
5

के माध्यम से पोस्ट करते समय "CURLE_OUT_OF_MEMORY" त्रुटि मैं एक सुरक्षित वेब सेवा में साबुन अनुरोध पोस्ट करने के लिए libCurl का उपयोग करने वाले एप्लिकेशन को लिखने का प्रयास कर रहा हूं। यह विंडोज एप्लिकेशन libCurl संस्करण 7.1 9.0 के खिलाफ बनाया गया है, जो बदले में, openssl-0.9.8i के खिलाफ बनाया गया है। प्रासंगिक कर्ल संबंधित कोड इस प्रकार है:https

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

जब मैं यूआरएल निष्पादित करने के लिए प्रयास करते हैं, कर्ल एक CURLE_OUT_OF_MEMORY त्रुटि जो एक SSL संदर्भ आवंटित करने के लिए एक विफलता के लिए संबंधित प्रतीत होता है देता है। क्या किसी और को इससे पहले इस समस्या का सामना करना पड़ा है?

उत्तर

3

आगे की जांच के बाद, मैंने पाया कि यह त्रुटि SSL_library_init() को कॉल करके ओपनएसएसएल लाइब्रेरी को प्रारंभ करने में विफलता के कारण थी।

8

मैं एक ही समस्या थी, बस मैं ध्यान दें कि बजाय openssl निर्यात बुला से सीधे यह curl_global_init

0

करने के लिए ध्वज CURL_GLOBAL_SSL जोड़कर तय किया जा सकता है SSL_library_init मैं करने के लिए उन्नयन के बाद एक ही लक्षण का सामना करना पड़ा जोड़ा जाने लगा कि Ubuntu 16.04 जैसा कि this answer में वर्णित है। समाधान इस तरह टीएलएस का उपयोग करना था।

curl_easy_setopt(curl_, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2)); 

जाहिर उबंटू 16.04 पर SSLv3 was disabled