2012-09-12 369 views
1

我在我的C++應用程序中使用libcurl 7.26.0通過https協議與服務器進行通信。它工作正常,但~20分鐘後連接失敗:curl_easy_perform返回CURLE_SSL_CACERT_BADFILE。我使會話的curl_easy_cleanup然後以相同的方式成功初始化它,但是在curl_easy_perform上它失敗並出現相同的錯誤。只有重新啓動應用程序有幫 我已經檢查過* .pem文件存在於文件系統上,並且在運行過程中應用程序的訪問權限未被更改。我使用的libcurl 7.26.0libcurl:curl_easy_perform在CURLE_SSL_CACERT_BADFILE失敗後失敗

,Windows 7的86,2005年MSVC

任何幫助將得到高度讚賞。

UPD:問題僅重現發佈模式。

回答

0

我正在使用cURL日誌記錄。它以這種方式打開: curl_easy_setopt(m_curl_session, CURLOPT_DEBUGFUNCTION, curl_debug_trace) 在函數的開始處,通過fopen打開日誌文件curl_debug_trace,最後使用fclose關閉日誌文件。在發佈模式中,由於某些原因,它不會關閉文件和進程運行以限制打開的文件,並且無法打開cacert文件。

解決方法是打開日誌文件一次,並保持打開狀態,直到程序運行。