[ESP32][esp-idf] https和mqtt同时签名冲突解决

发布者:码字奇才最新更新时间:2022-08-15 来源: csdn关键字:ESP32  https  mqtt 手机看文章 扫描二维码
随时随地手机看文章

现象:HTTPS建立连接的同时,MQTT也建立连接。双方都在签名证书,导致CPU抢占,致使看门狗超时。


解决:在tls层加互斥锁,防止同时建立连接。


修改文件:xEspressifcomponentsesp-tlsesp_tls_mbedtls.c

在这里插入图片描述
在这里插入图片描述

部分代码如下。


#include "freertos/FreeRTOS.h"

#include "freertos/semphr.h"


SemaphoreHandle_t _semaphore = NULL;

/**

 * @brief      Create TLS/SSL server session

 */

int esp_mbedtls_server_session_create(esp_tls_cfg_server_t *cfg, int sockfd, esp_tls_t *tls)

{

    if (tls == NULL || cfg == NULL) {

        return -1;

    }

    static bool fast = false;

    if (!fast) {

        fast = true;

        _semaphore = xSemaphoreCreateMutex();

    }

    tls->role = ESP_TLS_SERVER;

    tls->sockfd = sockfd;


    xSemaphoreTake(_semaphore, portMAX_DELAY);

    esp_err_t esp_ret = esp_create_mbedtls_handle(NULL, 0, cfg, tls);

    xSemaphoreGive(_semaphore);


    if (esp_ret != ESP_OK) {

        ESP_LOGE(TAG, "create_ssl_handle failed, returned [0x%04X] (%s)", esp_ret, esp_err_to_name(esp_ret));

        ESP_INT_EVENT_TRACKER_CAPTURE(tls->error_handle, ESP_TLS_ERR_TYPE_ESP, esp_ret);

        tls->conn_state = ESP_TLS_FAIL;

        return -1;

    }

    tls->read = esp_mbedtls_read;

    tls->write = esp_mbedtls_write;

    int ret;

    while ((ret = mbedtls_ssl_handshake(&tls->ssl)) != 0) {

        if (ret != ESP_TLS_ERR_SSL_WANT_READ && ret != ESP_TLS_ERR_SSL_WANT_WRITE) {

            ESP_LOGE(TAG, "mbedtls_ssl_handshake returned -0x%04X", -ret);

            mbedtls_print_error_msg(ret);

            tls->conn_state = ESP_TLS_FAIL;

            return ret;

        }

    }

    return 0;

}

关键字:ESP32  https  mqtt 引用地址:[ESP32][esp-idf] https和mqtt同时签名冲突解决

上一篇:[N76E003][PCA9540BD][IIC扩展器] 一组IIC变两组IIC 使用方法
下一篇:[ESP32][esp-idf] AP+STA实现无线桥接 中转wifi信号

推荐阅读最新更新时间:2024-11-13 12:07

在车辆互联网上应用MQTT
车辆互联网是一种能够 连接车辆 与道路基础设施和其他设备实时通信。V2X包括V2V、V2I和V2P通信,使车辆能够实时地相互作用、基础设施和行人。V2X技术旨在改善道路安全,减少交通拥堵,提高驾驶经验,并使自主驾驶能力成为可能。 作为更广泛的事物生态系统互联网的一部分,印度地球物理学会融合了多种技术,如传感器、全球定位系统、云计算平台、数据分析工具和先进的网络解决方案。这些技术共同努力,从各种来源收集数据,例如船上诊断系统或外部交通监测服务,处理这些数据进行分析,并在连接车辆之间分享这些数据。 国际海洋生态系统的主要组成部分是: · 车辆, 配备了传感器和电子控制装置(ECU),收集有关车辆性能和环境条件的数据。 · 传感
[嵌入式]
基于ESP32的卡林巴琴制作教程
作为一个理工男,对音乐总有着迷之兴趣。但是在这方面一直缺乏指导,只在小学的时候上过几节音乐,记得少许简谱的概念。后来中学忙于文化课,大学选择了电子专业,与音乐就越来越远。笔者现在已经参加工作了,小时候埋在心里的种子终究会发芽,工作闲暇利用自己专业相关的知识,设计了一款电子乐器,与诸君分享。 1 卡林巴琴简介 卡林巴琴本是非洲的一种民族乐器,通过弹拨发出声音。本设计模仿卡林巴琴的外观,采用图1 所示的鼠标按键代替卡林巴琴的金属弹片,蓝牙连接手机,在手机上发出声音。 图1 鼠标按键 2 硬件设计 该设计采用ESP32 作为主控单元,ESP32 是一颗功能强大的物联网芯片,可同时支持WiFi 和蓝牙功能,20+ 可用GPIO
[嵌入式]
基于<font color='red'>ESP32</font>的卡林巴琴制作教程
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved