当broker解析mqtt错误的时候,broker会关闭socket。
在socket被关闭后,如果调用发送函数,umqtt_trans_send 这个会死循环回不来。
|
int umqtt_trans_send(int sock, const rt_uint8_t *send_buf, rt_uint32_t buf_len, int timeout) |
这个函数没有应对socket关闭的情况,而且返回是常零 (返回是 -errno宏,但这个是线程错误,线程并没有错),同时上层也没有对连接关闭的情况进行处理。