исправлена обработка 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
changed title from [PR #415] [MERGED] Исправление зависания "Обновления..." на iOS/iPadOS to [PR #415] Исправление зависания "Обновления..." на iOS/iPadOS2026-07-20 04:09:13 +03:00
mirror-bot
changed title from [PR #415] Исправление зависания "Обновления..." на iOS/iPadOS to [PR #415] [MERGED] Исправление зависания "Обновления..." на iOS/iPadOS2026-07-20 22:54:45 +03:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 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/iPadOS05b04c5Fix Fix iOS/Android routing, refactor MTProto extraction, fix media upload4c79de2Update README.md9267416Update README.md24ffa95Update tg_ws_proxy.py📊 Changes
1 file changed (+122 additions, -50 deletions)
View changed files
📝
proxy/tg_ws_proxy.py(+122 -50)📄 Description
Что изменено
В чём была проблема
На iPhone и iPad прокси подключался, но дальше Telegram просто висит на "Обновлении...", без синхронизации сообщений и без загрузки медиа.
Причина была в том, что текущая логика разделения MTProto-пакетов срабатывает некорректно. Если мобильный клиент отправлял несколько пакетов подряд одним куском или если пакет приходил по частям, прокси мог передать их в WebSocket неправильно.
На ПК и Android этого поведения не вижу, а вот на iOS/iPadOS не происходит даже синхронизации сообщений, не то что подгрузки медиа.
Что получилось в результате
После правки трафик с iOS/iPadOS в локальной сети начал проходить нормально. По логам вижу, что:
При этом существующая работа на ПК и Android не затронута: логика осталась совместимой, просто стала корректнее обрабатывать мобильный трафик.
Как проверялось
python -m py_compile proxy/tg_ws_proxy.pyИзменения продумывались и вносились с участием Codex.
Референс: #414
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
[PR #415] [MERGED] Исправление зависания "Обновления..." на iOS/iPadOSto [PR #415] Исправление зависания "Обновления..." на iOS/iPadOS[PR #415] Исправление зависания "Обновления..." на iOS/iPadOSto [PR #415] [MERGED] Исправление зависания "Обновления..." на iOS/iPadOS