Skip to content

Проблема с reconnect в iOS System VPN #36

Description

@goldmandima61

Тестирую OpenFlux на iOS, сборка 1.0.0 (17).

Схема:
iPhone → OpenFlux → Yandex Docs → OpenFlux exit-node на VPS → Internet

На iPhone одновременно запускаю:

  1. Верхний Start — standalone OpenFlux / SOCKS5
  2. Нижний Start VPN — System VPN (NetworkExtension)

Что происходит:

Оба режима сначала работают нормально.

При кратковременном обрыве Yandex WebSocket сервер фиксирует:

[YDOCS] Read error: ... connection reset by peer
[YDOCS] reconnecting in ~600ms
[YDOCS] connectToDoc attempt ...
[YDOCS] response status=200
[YDOCS] WebSocket connected ...

После этого:

  • верхний standalone OpenFlux/SOCKS5 нормально переживает reconnect и продолжает работать;
  • нижний System VPN в этот момент переходит в Disconnected;
  • System VPN автоматически обратно не подключается.

То есть reconnect транспорта Yandex работает, но System VPN/NetworkExtension не восстанавливает соединение после этого reconnect.

По ощущениям проблема именно в том, что standalone-клиент умеет пережить переподключение transport layer, а PacketTunnel/System VPN теряет состояние и требует ручного запуска заново.

Стоит проверить:

  • обработку reconnect Yandex внутри PacketTunnelProvider;
  • не закрывается ли packetFlow / tunnel при кратковременном transport disconnect;
  • должен ли System VPN ждать восстановления transport вместо перехода в Disconnected;
  • есть ли автоматический restart/reconnect NetworkExtension после восстановления Yandex WebSocket.

Сервер при этом продолжает работать, exit-node не падает.

Если нужно, могу прислать полный лог с точным временем обрыва и reconnect.

А так приложение супер , респект 👍🏼

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions