ZaStoGram/TMessagesProj/jni/tgnet
Repository files (latest commit first)
Filename Latest commit message Latest commit date
loop-uh 78f4107005
Some checks failed
ZaStoGram source guards / guards (push) Failing after 22s
Build three ZaStoGram APKs / build (x86, ZaStoGram-standalone-x86, X86, x86) (push) Failing after 2m2s
Build three ZaStoGram APKs / build (armeabi-v7a, ZaStoGram-standalone-armeabi-v7a, Armv7, armv7) (push) Failing after 2m4s
Build three ZaStoGram APKs / build (arm64-v8a, ZaStoGram-standalone-arm64-v8a, Arm64, arm64) (push) Failing after 2m7s
Переписать путь данных WEB-прокси: один поток, окна по BDP
Замеры на стенде (эмулятор Android 16, настоящий WebView и страница
моста, tproxy-server в режиме websocket за nginx, netem) показали, что
канал насыщают и upstream DrKLO (8ad4ac9ba), и 12f2a119f, а теряется
не скорость, а очередь: фиксированные 1 МиБ выгрузки и 2 МиБ кредита
ограничивали скорость на длинных RTT (300 мс: 2,7 против 4,1 МБ/с), а
без окон upstream держит перед чатом секунды данных. Узкое место
Desktop (base64 eval по одному кадру) на Android отсутствует.

- WebProxyEngine: один поток на селекторе вместо потока на сокет,
  исполнителя носителя и общей блокировки. Сокет tgnet читается только
  по гранту планировщика, прямо в пакет для страницы; приём пишется в
  tgnet без блокировки, зависший читатель не держит остальные потоки.
- Все кадры прохода уходят странице одним сообщением (до 96 КиБ).
- Граница со страницей — WebMessagePort, когда WebView умеет: кадры
  страницы не разбираются в UI-потоке. Иначе, или если порт не ожил за
  15 с, — прежний слушатель; нонс и точный origin проверяются в обоих.
- Одно управление потоком: окно релея плюс адаптивные окна выгрузки и
  загрузки (WebProxyFlow.AdaptiveWindow, как у Desktop, с отличиями по
  замерам: запас очереди от 200 мс, рост как slow start, слив только
  при подтверждённой очереди, пол min(2 МиБ, 0,8 с скорости)).
- Выгрузка снова по четырём соединениям, как в upstream.
- Медиа через MTProxy/WEB: знак DC в заголовке берётся по тому же
  правилу, что и медиа-ключ (hasMediaAddress), иначе медиа-ключ мог
  уйти в обычный кластер и получить -404 сразу после создания.

Итог против upstream на 24 сценариях: скорость в пределах ±1–2 %
(загрузка 128 КиБ×4 при 50 мс +7 %, смешанный трафик в шуме),
задержка чата при полной выгрузке 2,3–6,3 с → 0,37–0,88 с, при
загрузке 1,3–3,3 с → 0,42–0,89 с. Стенд — Tools/web_proxy_bench,
JVM-тесты движка — Tools/web_proxy_flow_tests.
2026-09-24 00:47:40 +03:00
..
transport Уходить с молчащих WSS-релеев на прямое соединение 2026-08-27 18:53:48 +03:00
wss Уходить с молчащих WSS-релеев на прямое соединение 2026-08-27 18:53:48 +03:00
ApiScheme.cpp update to 12.9.0 (6966) 2026-07-16 16:46:05 +04:00
ApiScheme.h update to 12.9.0 (6966) 2026-07-16 16:46:05 +04:00
BuffersStorage.cpp Ходить к веб-релеям по IPv6, когда он доступен 2026-08-09 15:31:09 +03:00
BuffersStorage.h Add network debug logging with throttling and metrics 2026-06-27 20:03:11 +03:00
ByteArray.cpp Update to 5.2.1 2019-01-23 20:03:33 +03:00
ByteArray.h Update to 4.9.0 2018-07-30 09:07:02 +07:00
ByteStream.cpp Update to 5.11.0 2019-09-10 13:56:11 +03:00
ByteStream.h Update to 4.9.0 2018-07-30 09:07:02 +07:00
Config.cpp Update to 5.2.1 2019-01-23 20:03:33 +03:00
Config.h Update to 4.9.0 2018-07-30 09:07:02 +07:00
Connection.cpp Переписать путь данных WEB-прокси: один поток, окна по BDP 2026-09-24 00:47:40 +03:00
Connection.h Считать WEB-носитель одной общей трубой 2026-09-23 20:34:07 +03:00
ConnectionSession.cpp Update to 5.2.1 2019-01-23 20:03:33 +03:00
ConnectionSession.h Update to 5.2.1 2019-01-23 20:03:33 +03:00
ConnectionsManager.cpp Считать WEB-носитель одной общей трубой 2026-09-23 20:34:07 +03:00
ConnectionsManager.h Добавить диагностику загрузки сообщений 2026-08-19 23:40:57 +03:00
ConnectionSocket.cpp Считать WEB-носитель одной общей трубой 2026-09-23 20:34:07 +03:00
ConnectionSocket.h Считать WEB-носитель одной общей трубой 2026-09-23 20:34:07 +03:00
ConnectionSocketStateMachine.cpp Перевести WSS на непрерывный байтовый поток 2026-08-08 19:43:26 +03:00
ConnectionSocketStateMachine.h Считать WEB-носитель одной общей трубой 2026-09-23 20:34:07 +03:00
Datacenter.cpp update to 12.10.2 (7086) 2026-09-17 02:11:18 +04:00
Datacenter.h Update to 8.8.2 2022-06-21 06:51:00 +04:00
Defines.h Считать WEB-носитель одной общей трубой 2026-09-23 20:34:07 +03:00
EventObject.cpp Update to 4.9.0 2018-07-30 09:07:02 +07:00
EventObject.h Update to 4.9.0 2018-07-30 09:07:02 +07:00
FileLog.cpp Extract mtproxy module with unified retry authority 2026-07-02 18:25:13 +03:00
FileLog.h Extract mtproxy module with unified retry authority 2026-07-02 18:25:13 +03:00
Handshake.cpp update to 11.9.1 (5900) 2025-05-01 02:05:36 +04:00
Handshake.h update to 10.13.1 (4845) 2024-06-03 10:21:03 +04:00
MTProtoScheme.cpp update to 11.8.0 (5771) 2025-03-10 17:15:31 +04:00
MTProtoScheme.h update to 11.8.0 (5771) 2025-03-10 17:15:31 +04:00
NativeByteBuffer.cpp update to 9.7.0 (3687) 2023-07-21 00:15:36 +04:00
NativeByteBuffer.h Update to 4.9.0 2018-07-30 09:07:02 +07:00
ProxyCheckInfo.cpp update to 9.5.5 2023-03-24 15:38:14 +04:00
ProxyCheckInfo.h Extract mtproxy module with unified retry authority 2026-07-02 18:25:13 +03:00
Request.cpp update to 11.2.3 (5335) 2024-10-18 00:04:16 +04:00
Request.h update to 11.8.0 (5771) 2025-03-10 17:15:31 +04:00
Timer.cpp Update to 5.2.1 2019-01-23 20:03:33 +03:00
Timer.h Update to 4.9.0 2018-07-30 09:07:02 +07:00
TLObject.cpp Update to 4.9.0 2018-07-30 09:07:02 +07:00
TLObject.h Update to 4.9.0 2018-07-30 09:07:02 +07:00
TLSHello.cpp update to 12.10.2 (7086) 2026-09-17 02:11:18 +04:00
TLSHello.h update to 12.10.2 (7086) 2026-09-17 02:11:18 +04:00