355a9912abe892550c4c8e0cc1a7ed63ed21cdcc
BearSSL делает TLS-хендшейк синхронно, поэтому вместо асинхронности блокировка ограничивается по времени. Главный источник залипания — не таймауты HTTPClient, а DNS: WiFiClientSecureCtx::connect(name, port) резолвит имя через WiFi.hostByName() без таймаута и подвешивает loop() на ~10 с. Теперь имя разрешается заранее с лимитом 800 мс, результат попадает в кэш lwIP, и внутренний резолв возвращается мгновенно. Соединение по-прежнему идёт по имени, поэтому SNI и заголовок Host сохраняются. Остаток бюджета уходит в http.setTimeout(): он ограничивает и connect+TLS (через _client->setTimeout() до connect), и чтение ответа (собственный цикл HTTPClient по _tcpTimeout). Худший случай: ~3.5 с вместо прежних 10-15 с. Выходы аварии не затронуты — digitalWrite() и раньше выполнялся до отправки. Проверено: xtensa-lx106-elf-g++ -fsyntax-only -Wall -Wextra против ядра 3.1.2 — в скетче замечаний нет; разбор URL прогнан на 15 граничных случаях. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
No description provided
685 KiB
Languages
C++
58.5%
C
41.5%