[PR #415] [MERGED] Исправление зависания "Обновления..." на iOS/iPadOS #28

Closed
opened 2026-07-19 11:33:59 +03:00 by mirror-bot · 0 comments

📋 Pull Request Information

Original PR: https://github.com/Flowseal/tg-ws-proxy/pull/415
Author: @Geil
Created: 3/24/2026
Status: ✅ Merged
Merged: 3/27/2026
Merged by: @Flowseal

Base: main ← Head: fix/ios-ws-packet-handling


📝 Commits (5)

  • ee3c2bd Исправить обработку MTProto через WebSocket на iOS/iPadOS
  • 05b04c5 Fix Fix iOS/Android routing, refactor MTProto extraction, fix media upload
  • 4c79de2 Update README.md
  • 9267416 Update README.md
  • 24ffa95 Update tg_ws_proxy.py

📊 Changes

1 file changed (+122 additions, -50 deletions)

View changed files

📝 proxy/tg_ws_proxy.py (+122 -50)

📄 Description

Что изменено

  • исправлена обработка MTProto-пакетов при передаче через WebSocket
  • добавлено корректное разделение нескольких пакетов, если клиент отправляет их одним TCP-запросом
  • добавлена буферизация неполных пакетов, чтобы они не улетали в WebSocket в битом виде
  • учтены разные варианты MTProto transport: abridged, intermediate и padded intermediate
  • добавлен flush хвоста при закрытии соединения
  • на Windows убран лишний шумный ERROR для WinError 1236, который в этом случае не является критичной ошибкой, просто попало в логи при остановке

В чём была проблема

На iPhone и iPad прокси подключался, но дальше Telegram просто висит на "Обновлении...", без синхронизации сообщений и без загрузки медиа.

Причина была в том, что текущая логика разделения MTProto-пакетов срабатывает некорректно. Если мобильный клиент отправлял несколько пакетов подряд одним куском или если пакет приходил по частям, прокси мог передать их в WebSocket неправильно.
На ПК и Android этого поведения не вижу, а вот на iOS/iPadOS не происходит даже синхронизации сообщений, не то что подгрузки медиа.

Что получилось в результате

После правки трафик с iOS/iPadOS в локальной сети начал проходить нормально. По логам вижу, что:

  • соединения до DC2 и media DC открываются штатно
  • через WebSocket идут нормальные сессии с реальным трафиком, в том числе с медиа
  • ошибок WebSocket в успешном прогоне нет

При этом существующая работа на ПК и Android не затронута: логика осталась совместимой, просто стала корректнее обрабатывать мобильный трафик.

Как проверялось

  • запуск прокси на Windows в локальной сети
  • проверка работы с нескольких устройств (ПК, смартфоны Android и iPhone, планшет iPad)
  • просмотр логов реального прогона
  • python -m py_compile proxy/tg_ws_proxy.py
  • локальный smoke-test на разрезанные и склеенные MTProto-пакеты

Изменения продумывались и вносились с участием Codex.
Референс: #414


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Flowseal/tg-ws-proxy/pull/415 **Author:** [@Geil](https://github.com/Geil) **Created:** 3/24/2026 **Status:** ✅ Merged **Merged:** 3/27/2026 **Merged by:** [@Flowseal](https://github.com/Flowseal) **Base:** `main` ← **Head:** `fix/ios-ws-packet-handling` --- ### 📝 Commits (5) - [`ee3c2bd`](https://github.com/Flowseal/tg-ws-proxy/commit/ee3c2bd5abc7325e01743708a6f8d2841d3aae6b) Исправить обработку MTProto через WebSocket на iOS/iPadOS - [`05b04c5`](https://github.com/Flowseal/tg-ws-proxy/commit/05b04c526f01e017e4ec6b6e85d979f39f4fd11c) Fix Fix iOS/Android routing, refactor MTProto extraction, fix media upload - [`4c79de2`](https://github.com/Flowseal/tg-ws-proxy/commit/4c79de2cd76322e6688863747a37d4814d83e7d1) Update README.md - [`9267416`](https://github.com/Flowseal/tg-ws-proxy/commit/9267416691aa61eb0da254e2d8c1ba409c106b28) Update README.md - [`24ffa95`](https://github.com/Flowseal/tg-ws-proxy/commit/24ffa955e40803e218501326c235d1b791cb68be) Update tg_ws_proxy.py ### 📊 Changes **1 file changed** (+122 additions, -50 deletions) <details> <summary>View changed files</summary> 📝 `proxy/tg_ws_proxy.py` (+122 -50) </details> ### 📄 Description ## Что изменено - исправлена обработка MTProto-пакетов при передаче через WebSocket - добавлено корректное разделение нескольких пакетов, если клиент отправляет их одним TCP-запросом - добавлена буферизация неполных пакетов, чтобы они не улетали в WebSocket в битом виде - учтены разные варианты MTProto transport: abridged, intermediate и padded intermediate - добавлен flush хвоста при закрытии соединения - на Windows убран лишний шумный ERROR для WinError 1236, который в этом случае не является критичной ошибкой, просто попало в логи при остановке ## В чём была проблема На iPhone и iPad прокси подключался, но дальше Telegram просто висит на "Обновлении...", без синхронизации сообщений и без загрузки медиа. Причина была в том, что текущая логика разделения MTProto-пакетов срабатывает некорректно. Если мобильный клиент отправлял несколько пакетов подряд одним куском или если пакет приходил по частям, прокси мог передать их в WebSocket неправильно. На ПК и Android этого поведения не вижу, а вот на iOS/iPadOS не происходит даже синхронизации сообщений, не то что подгрузки медиа. ## Что получилось в результате После правки трафик с iOS/iPadOS в локальной сети начал проходить нормально. По логам вижу, что: - соединения до DC2 и media DC открываются штатно - через WebSocket идут нормальные сессии с реальным трафиком, в том числе с медиа - ошибок WebSocket в успешном прогоне нет При этом существующая работа на ПК и Android не затронута: логика осталась совместимой, просто стала корректнее обрабатывать мобильный трафик. ## Как проверялось - запуск прокси на Windows в локальной сети - проверка работы с нескольких устройств (ПК, смартфоны Android и iPhone, планшет iPad) - просмотр логов реального прогона - `python -m py_compile proxy/tg_ws_proxy.py` - локальный smoke-test на разрезанные и склеенные MTProto-пакеты Изменения продумывались и вносились с участием Codex. Референс: #414 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror-bot added the pull-request label 2026-07-19 11:33:59 +03:00
mirror-bot changed title from [PR #415] [MERGED] Исправление зависания "Обновления..." на iOS/iPadOS to [PR #415] Исправление зависания "Обновления..." на iOS/iPadOS 2026-07-20 04:09:13 +03:00
mirror-bot changed title from [PR #415] Исправление зависания "Обновления..." на iOS/iPadOS to [PR #415] [MERGED] Исправление зависания "Обновления..." на iOS/iPadOS 2026-07-20 22:54:45 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Utilities/tg-ws-proxy#28