| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
Android CI / build (push) Failing after 5m51s
Симптом: при включённом VPN обновление подписки могло падать (таймаут TLS-рукопожатия к хосту подписки), хотя напрямую сервер отвечает — деградация egress туннеля превращала рабочую ссылку в ошибку. Причина: HttpSubscriptionFetcher открывал соединение по сети по умолчанию, которая при активном VpnService — это туннель. Прямой попытки не было вовсе. Инвариант: URL подписки указывает на инфраструктуру провайдера и отвечает одинаково на любом пути. Тянем его сначала по не-VPN сети (allNetworks без TRANSPORT_VPN); на путь по умолчанию (туннель) уходим только при transport- провале — когда ответа не пришло. Любой HTTP-ответ (в т.ч. 404 отозванной ссылки) авторитетен и терминален, не маскируется VPN-повтором. - HttpSubscriptionFetcher: инъектируемый openConnection(url, direct) + предикат directAvailable; fetchVia(direct) и оркестратор fetch с фолбэком по IOException. ImportException (ответ сервера) пробрасывается как терминал. - AppContainer: directAvailable/openConnection выбирают текущую не-VPN сеть через ConnectivityManager. Тесты (локальный HttpServer, без мока Network): transport-провал direct уходит на путь по умолчанию и выигрывает; HTTP-ответ direct терминален и на VPN не уходит; без не-VPN сети используется путь по умолчанию без изменений. Существующие 13 тестов SubscriptionClientTest зелёные. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
| .. | ||
| src | ||
| build.gradle.kts | ||
| proguard-rules.pro | ||