libcurl,cef浏览器在ssl请求上发生冲突

时间:2016-04-18 15:00:11

标签: c++ ssl curl openssl chromium-embedded

我有应用程序,它使用libcurl进行网络连接,使用libcef进行渲染。

一切正常,除了一个问题:如果在初始化libcef之后使用libcurl,https请求将花费大量时间(超过一秒)。

这是最小的代码,它说明了问题:

#include <curl/curl.h>
#include <iostream>
#include "include/cef_app.h"

class MyCefApp: public CefApp
{
private:
    IMPLEMENT_REFCOUNTING(MyCefApp);
};

int main()
{
    CefMainArgs main_args;
    CefRefPtr<CefApp> App = new MyCefApp();
    CefExecuteProcess(main_args, App, NULL);
    CefSettings settings;
    CefInitialize(main_args, settings, App, NULL);


    CURL *curl;
    curl = curl_easy_init();
    curl_easy_setopt(curl, CURLOPT_URL, "https://google.com");
    curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER, 0L);
    curl_easy_perform(curl);
    double val;
    curl_easy_getinfo(curl, CURLINFO_APPCONNECT_TIME, &val);
    std::cout<<"CURLINFO_APPCONNECT_TIME: "<<val<<"  sec.";

    curl_easy_cleanup(curl);


  return 0;
}

应用程序输出将如下:

CURLINFO_APPCONNECT_TIME:1.29秒

但是当行

CefInitialize(main_args, settings, App, NULL);

将被注释,或者在cef块之前放置curl块,输出将如下:

CURLINFO_APPCONNECT_TIME:0.38秒

如果我使用非ssl版本的google,问题就会消失。

我用:

libcurl/7.48.0 OpenSSL/1.0.1s zlib/1.2.8

使用

构建的Libcurl
mode=dll VC=14 WITH_SSL=dll WITH_ZLIB=dll ENABLE_SSPI=no ENABLE_IPV6=yes ENABLE_IDN=no ENABLE_WINSSL=no GEN_PDB=no DEBUG=no MACHINE=x86
在Windows 7上使用VS 2015社区版本构建libcurl,openssl,zlib和libcef。

有人能指出我,为什么ssl请求表现得那样? 感谢。

0 个答案:

没有答案