Curl多线程https访问,崩溃问题修复

这篇具有很好参考价值的文章主要介绍了Curl多线程https访问,崩溃问题修复。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Curl: ��: SSL and multithread crash on windows, how to use mutex on windows?

SSL and multithread crash on windows, how to use mutex on windows?

From: mao mao <lmjrd_at_hotmail.com>
Date: Fri, 25 Nov 2016 09:50:48 +0000

Thankyou Thomas and Johan both


to Johan: how to use these two functions

openssl_crypto_locking_callback
openssl_crypto_init_locks
when start new thread using _beginthreadex or createthread or afxbeginthread?


Using boost:

#include <boost/ptr_container/ptr_vector.hpp>
#include <openssl/crypto.h>

#define OPENSSL_THREAD_DEFINES
#include <openssl/opensslconf.h>
#if !defined(OPENSSL_THREADS)
#error OpenSSL needs to be compiled with thread support
#endif

boost::ptr_vector<boost::mutex> openssl_lock_list;

void openssl_crypto_locking_callback(
int mode, int type, const char * const, int
) {
if( mode & CRYPTO_LOCK ) {
openssl_lock_list[type].lock();
} else {
openssl_lock_list[type].unlock();
}
}

void openssl_crypto_init_locks()
{
for(int i = 0; i < CRYPTO_num_locks(); ++i) {
openssl_lock_list.push_back(new boost::mutex());
}

// Not neccessary according to docs, and boost can't really give a pointer or
// integer ID of a thread
// CRYPTO_THREADID_set_callback(openssl_crypto_threadid_callback);
CRYPTO_set_locking_callback(openssl_crypto_locking_callback);
}



Johan de Vries
Software Developer

[http://www.ixon.net/wp-content/uploads/2013/12/logo-default.png]



> SSL and multithread crash on windows, how to use mutex on windows?

Best way is you post a striped down example which crashes.

For me the following works, without a problem.

Once:
        curl_global_init(CURL_GLOBAL_DEFAULT);

For each thread:
        _beginthread(...);
        share = curl_share_init();
        curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION);
        curl = curl_easy_init();
        curl_easy_setopt(curl, CURLOPT_SHARE, share);
        curl_easy_setopt(curl, CURLOPT_URL, "https://google.com");
        curl_easy_perform(curl);
        curl_easy_cleanup(curl);

Cheers,
        Thomas
-------------------------------------------------------------------
List admin: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: curl - Mailing List Etiquette
 

-------------------------------------------------------------------
List admin: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: curl - Mailing List Etiquette
Received on 2016-11-25文章来源地址https://www.toymoban.com/news/detail-768944.html

到了这里,关于Curl多线程https访问,崩溃问题修复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RestTemplate通过HTTPS协议访问接口

    RestTemplate 默认不支持https协议,需要支持有两种方式,第一种是忽略认证,第二种是导入证书(比第一种安全) 在这里只实现第一种方式,实现代码如下

    2024年02月11日
    浏览(36)
  • HTTP与HTTPS协议的嵌套访问

            HTTP和HTTPS是两种不同的协议。HTTP使用80端口,而HTTPS使用443端口。HTTP是明文传输,而HTTPS为了保障数据传输的安全性,通过SSL证书实现加密传输。   问题1:HTTP和HTTPS可以互相访问吗?         可以互相访问,但存在安全问题。虽然HTTPS是一种加密协议,可以保护

    2023年04月22日
    浏览(58)
  • curl网络访问时报错:(56) Recv failure: Connection timed out

    某次用户对接某业务平台,在用户侧curl平台侧资源,报错:(56) Recv failure: Connection timed out; 1、在服务器端curl上述地址正常;公网访问该url地址也正常; 2、用户侧访问,telnet 端口访问正常,这是curl Url时,提示连接超时; 3、可能原因: 客户端侧查看socket:显示:ESTABLISH

    2024年02月05日
    浏览(37)
  • OpenAI API(ChatGPT)接口地址https://api.openai.com/v1/chat网络问题无法访问Error: connect ECONNREFUSED ETIMEDOUT

    https://api.openai.com/v1/chat是openAI的API接口地址,因为长城的原因,23年年初一次更新后便无法访问,访问接口会提示Error: connect ETIMEDOUT等网络相关的问题。 解决办法有三种: 本文只做方法讨论,供读者自行研究。如需实际的解决方案,请联系我 1. 代理(适用于大型的场景) 在

    2023年04月18日
    浏览(120)
  • SimpleDateFormat 线程安全问题修复方案

    在日常的开发过程中,我们不可避免地会使用到 JDK8 之前的 Date 类,在格式化日期或解析日期时就需要用到 SimpleDateFormat 类,但由于该类并不是线程安全的,所以我们常发现对该类的不恰当使用会导致日期解析异常,从而影响线上服务可用率。 以下是对 SimpleDateFormat 类不恰当

    2024年02月12日
    浏览(29)
  • nginx配置监听443端口,开启ssl协议,走 https 访问

    最近有个项目需要上线到浙政钉工作台,那边要求项目走 https 访问,但是服务器没有进行相应的配置一直都是走的 http,于是乎对服务器进行的一番配置,注明:linux 服务器 ,记录一下相关的踩坑记录,以及完整版的成功配置流程。 各位找到各自服务器上的 nginx 安装目录,

    2024年02月06日
    浏览(48)
  • SpringBoot后端服务开启Https协议提供访问(使用阿里云资源)

    目录 概述  申请/下载证书 部署证书 本地测试访问 服务器部署访问  最后/扩展 总结 本篇博客说明如何将SpringBoot项目开启Https协议提供访问。 博文以步骤 【申请/下载证书】,【部署证书】,【本地测试访问】,【服务器部署访问】  , 【扩展】 展开说明。 废话 :当我们

    2024年02月12日
    浏览(33)
  • 【网络协议】聊聊HTTPS协议

    前面的文章,我们描述了网络是怎样进行传输数据包的,但是网络是不安全的,对于这种流量门户网站其实还好,对于支付类场景其实容易将数据泄漏,所以安全的方式是通过加密,加密方式主要是 对称加密 和 非对称加密 。 对称加密,其实就是双方使用同样的密钥进行加

    2024年02月06日
    浏览(37)
  • 网络原理 - HTTP / HTTPS(5)——https协议

    目录 一、HTTPS是什么 为什么要进行加密 二、“加密” 是什么 三、HTTPS的工作过程 (1)引入对称加密 对称密钥的特点: (2)引入非对称加密 非对称加密的特点: (3)中间人攻击 (4)引入证书 1、证书的介绍 2、证书验证过程 3、几个关键问题(黑客不能篡改证书的原因)

    2024年04月17日
    浏览(30)
  • 修复SpringBoot Actuator未授权访问遇到的问题

    访问http://xxx.xx.x/actuator 会直接获取到系统监控信息,存在安全问题,禁用actuator 缺点:谁都不可以访问不够灵活 会展示部分信息,漏扫严格的话建议替换其他方法 缺点:谁都不可以访问不够灵活 配置文件增加 在项目目录新建config文件夹,新建下面两个文件 1. ActuatorFilter

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包