Резолвер запрашивал только записи A, поэтому список IPv6 всегда оставался
пустым и клиент не мог воспользоваться шестым протоколом даже там, где он
есть. Между тем у релеев DC1 и DC5 IPv4-адрес единственный и в сетях
пользователей не отвечает вовсе: в логе 22 таймаута подряд на стадии
установки TCP к kws1-1 и kws5-1, ни одного успешного подключения. Эмодзи и
реакции лежат как раз на этих датацентрах, отсюда жалоба «фото грузятся, а
эмодзи нет».
По IPv6 те же релеи отвечают без потерь, и адресов там сразу два против
одного у IPv4 — то есть протокол даёт и обход блокировки, и запасной адрес.
Теперь AAAA запрашивается отдельным запросом (только при наличии у
устройства собственного глобального IPv6, иначе выдавать такой адрес
значило бы заменить рабочий путь мёртвым), IPv6 выбирается первым, а
кандидаты перебираются по кругу: повторное разрешение имени означает, что
предыдущий адрес не сработал, и следующая попытка обязана прийтись на
другого кандидата.
Маршрут WSS при доступном IPv6 строится по имени релея, а не по зашитому
IPv4-адресу, иначе резолвер вообще не вызывается.
Заодно свёрнут спам аллокаций буферов: он давал больше тысячи строк на лог
и вытеснял полезные записи.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>