Переключение на резервный аплинк доведено до конца
- DNS теперь переключается вместе с трафиком. Раньше сторож уводил маршрут с мёртвого линка, но резолверы этого линка оставались в общем списке — и часто первыми. Живой случай: роутер увезли из дома, Wi-Fi-станция потеряла точку, но netifd держит интерфейс поднятым со старой арендой; трафик уходит на модем, а каждое разрешение имени по-прежнему летит на домашний роутер, которого рядом больше нет. Снаружи это выглядит как «интернета нет» (пинг по IP при этом работает), и лечилось только перезагрузкой; с VPN поверх залипание тянулось ещё дольше. Теперь серверы оштрафованного линка убираются из списка, а dnsmasq перечитывает его на лету. Работает для всех классов аплинков: провод, Wi-Fi-станция, модемы, HiLink-USB, LAN-DHCP однопортовых роутеров. Если легли все линки разом — список не трогается: стухшие серверы лучше, чем ни одного.
- Лечение Wi-Fi-аплинка включено по умолчанию. Тот же класс отказа с другой стороны: потерявшая маяки станция висит «поднятой» до вмешательства руками — как раз тогда, когда человек ушёл из зоны своей точки и рассчитывает на модем. Теперь она переподключается сама. Явно выключенное пользователем лечение уважается; разовая миграция снимает только тот ноль, который записывала сама форма настроек.
QMI: SIM больше не гасится, пока карта ещё не готова
- В нашем протоколе
qmirawпустой ответ о состоянии SIM трактовался как «карта неисправна», и ей передёргивали питание — а пустой ответ приходит и просто потому, что UIM ещё не поднялся. Карта не успевала инициализироваться никогда, петля кормила сама себя. Теперь три случая вместо двух: нет ответа — ждём в пределах таймаута и сообщаемSIM_NOT_INITIALIZEDбез питания; явноеillegal— передёргиваем, как и раньше; карта готова — идём дальше. Проверено на живых Quectel EC21 и EP06-E. Тот же дефект в штатном протоколеqmiчинит апстрим (openwrt/openwrt#24868); до его выхода пользователей наqmiприкрывает защита сторожа от петли перезапусков.