2012-09-12 143 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文件。

解决方法是打开日志文件一次,并保持打开状态,直到程序运行。