嵌入式技术william hill官网
直播中

h1654155272.9717

8年用户 1259经验值
擅长:电源/新能源
私信 关注
[问答]

请问有使用过MQTT TLS组件的吗?

问题如下:

[tls]mbedtls client struct init success...
[D/MQTT] ipv4 address port: 8883
[D/MQTT] HOST = www.vinin-cloud.com
[tls]Loading the CA root certificate success...
[tls]mbedtls client context init success...
[tls]mbedtls_net_connect err returned -0x52
[E/MQTT] mbedtls_client_connect err return : -0x52
[E/MQTT] Net connect error(-1)

调试发现卡在

int mbedtls_net_connect( mbedtls_net_context *ctx, const char *host, const char port, int proto )
.....................
/
Do name resolution with both IPv6 and IPv4 */
memset( &hints, 0, sizeof( hints ) );
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = proto == MBEDTLS_NET_PROTO_UDP ? SOCK_DGRAM : SOCK_STREAM;
hints.ai_protocol = proto == MBEDTLS_NET_PROTO_UDP ? IPPROTO_UDP : IPPROTO_TCP;
if( getaddrinfo( host, port, &hints, &addr_list ) != 0 )
return( MBEDTLS_ERR_NET_UNKNOWN_HOST );

返回

MBEDTLS_ERR_NET_UNKNOWN_HOST

估计是执行getaddrinfo出问题
请问有使用过MQTT tls组件的吗?
求教

回帖(3)

刘超

2022-12-20 09:14:30
mbedtls_net_connect返回的错误是 - 0x0052表示未知的主机名,DNS 解析失败
举报

h1654155272.9717

2022-12-20 09:14:47
DNS没有问题,单步调试到

int lwip_getaddrinfo(const char *nodename, const char *servname,const struct addrinfo *hints, struct addrinfo **res)
  ..............
ai = (struct addrinfo *)memp_malloc(MEMP_NETDB);
  if (ai == NULL) {
    return EAI_MEMORY;
  }
返回 EAI_MEMORY
好像是没有分配成功,难道是memp_malloc里的空间不够?
举报

h1654155272.9717

2022-12-20 09:14:54
问题解决:修改MEMP_NUM_NETDB为2,就行了,具体为啥,估计在一个线程内一个MEMP_NUM_NETDB不够用
举报

更多回帖

发帖
×
20
完善资料,
赚取积分