L×Box v2.4.3
Hotfix: с включённым Auto Proxy ядро не стартовало. Конфиг с urltest-группой (Auto Proxy) падал на старте: decode config: outbounds[N].tolerance: json: cannot unmarshal string into Go struct field URLTestOutboundOptions.tolerance of type uint16. Причина — tolerance уходило в конфиг строкой, а ядро (база sing-box 1.13.13) требует число (uint16). Затрагивало всех, у кого в канале активен Auto Proxy — «не взлетает ни при обновлении поверх, ни при установке заново».
Quick links:
🐛 Fixed ·
🔬 Verified ·
📲 Install ·
🇷🇺 На русском
🐛 Fixed
| # | Было | Стало |
|---|---|---|
| §161 | Нода urltest_tolerance объявлена type: text → в outbounds[].tolerance уходила строка "30" → ядро падало на decode (cannot unmarshal string into ... uint16). Срабатывало у всех с активным Auto Proxy. Регрессия с момента, когда литерал "tolerance": 100 заменили на переменную
| type: int → coerceVarValue("30","int") → число 30. Ядро принимает конфиг, Auto Proxy стартует. Поле UI не меняется (тот же комбобокс с пресетами 10/30/50/100/200)
|
| §161 | Вне-диапазонное число в любом int-поле (tolerance/port) — например 99999 или импорт мусора — снова роняло ядро на decode как uint16
| Clamp в uint16 [0, 65535] на двух слоях: coerce-backstop (ловит ручной ввод, импорт бэкапа, legacy) + UI (цифровая клавиатура, только цифры, поджатие на лету). В конфиг физически не попадёт int вне диапазона
|
🔬 Verified
flutter analyze— No issues found.flutter test— 1238 passed, включая регресс-тестыurltest_tolerance подставляется числом, а не строкойиint: clamp в uint16 [0, 65535].- Детерминированно на реальном
wizard_template.json:type:text → {"tolerance":"30"}(String, ядро падает) противtype:int → {"tolerance":30}(int, ядро принимает). - Ядро —
v1.13.13-lx.15(без изменений; форк sing-box-lx, fetch с SHA256-verify).
📲 Install
adb install -r LxBox-v2.4.3-arm64-v8a.apkБез uninstall! Поверх существующей установки. Настройки и подписки сохранятся.
🇷🇺 Кратко на русском
- Исправлен старт с Auto Proxy (§161). Если в канале был включён Auto Proxy, ядро не запускалось — ошибка
tolerance ... uint16. Значение поля «Tolerance (ms)» уходило в конфиг текстом, а ядро ждёт число. Теперь подставляется числом — всё стартует. В интерфейсе ничего не поменялось. - Защита от некорректных чисел (§161). Числовые поля (tolerance, порт прокси) теперь жёстко ограничены диапазоном
0..65535, который понимает ядро: ввести буквы или слишком большое значение нельзя, импорт чужого/битого значения тоже поджимается. Раньше такое снова роняло запуск. - Ядро — без изменений (
v1.13.13-lx.15).
Предыдущий релиз: v2.4.2.