接前一篇文章:ESP32-C3在MQTT访问时出现“transport_base: Poll timeout or error”问题的分析(6)
上一回说到笔者分析base_poll_write函数中的select()返回的结果可能并不是超时而是负值,并且在base_poll_write函数中添加了打印,如下所示:
当时想着是更新固件并烧录之后,等待问题再次复现,再确认到底是超时返回了0,还是出错返回了负值。
但后来笔者又深入看了上下文代码,发现其实添加大打印是多余的,根据现有线索已经可以判断出来,select也即base_poll_write函数是返回的还是负值了。为什么这么说呢?来看一下ssl_write的代码。
static int ssl_write(esp_transport_handle_t t, const char *buffer, int len, int timeout_ms)
{
int poll;
transport_esp_tls_t *ssl = ssl_get_context_data(t);
if ((poll = esp_transport_poll_write(t, timeo