Document atomic proxy client creation and instance shutdown order
This commit is contained in:
1 parent
5914e26579
commit
e2ee5f2397
2 files changed
+18
-7
No files matched your search
@@ -71,6 +71,16 @@ ConnectivityManager до запроса запуска и передаёт ко
|
||||
| Группа | Сессии пиров, её маршруты и логические каналы, планировщик подключения и recovery |
|
||||
| Сессия пира группы | NCD handle с момента CONNECTING, согласованные эпохи, состояние обмена таблицей, очередь отправки |
|
||||
|
||||
Proxy настраивается при создании ядра. Instance владеет общими UDP/ICMP-контекстами;
|
||||
TCP client/server владеют только своими bindings, listeners и TCP-потоками.
|
||||
Общие контексты нужны для exit либо клиентского TUN; SOCKS/HTTP без TUN их не требуют.
|
||||
Ошибка обязательного listener, TUN mapping или регистрации откатывает создание instance.
|
||||
Недоступность raw ICMP по правам или поддержке отключает только ICMP exit с WARN;
|
||||
клиентские ICMP REPLY и TCP/UDP продолжают работать.
|
||||
`utun_instance_destroy()` закрывает proxy и обрабатывает отложенные free до остановки
|
||||
UTUN/CHAT-групп и транспорта. Waiters/таймеры снимаются до освобождения их владельцев.
|
||||
Остановка отдельного TCP proxy-модуля не уничтожает общие UDP/ICMP-контексты.
|
||||
|
||||
SQLite открывается ядром один раз: `db_path/chats.db`, либо `:memory:`, если путь
|
||||
не задан. Остановка чата сохраняет каналы и сообщения в этой БД. В варианте
|
||||
`:memory:` данные сохраняются только до уничтожения ядра.
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
|
||||
## Создание и владение
|
||||
|
||||
`tcp_proxy_client_create` вызывается в uasync с живым `ua`. TUN/lwIP создаются только
|
||||
при **обоих** непустых `tun_name` и `tun_ip`. В этом случае `tun_init_nat` создаёт
|
||||
`tcp_proxy_client_create` вызывается в uasync с живым `ua`. Для TUN нужны **оба**
|
||||
непустых `tun_name` и `tun_ip`; задание только одного — ошибка. `tun_init_nat` создаёт
|
||||
отдельный proxy TUN (test_mode выбирает тестовый интерфейс); MTU<=0 заменяется на 1500,
|
||||
MTU TUN передаётся в lwIP. Имя tun_init_nat не означает включение eim_nat на ingress.
|
||||
Без TUN необходим хотя бы флаг SOCKS или HTTP; эти listeners могут работать без lwIP.
|
||||
@@ -20,9 +20,10 @@ MTU TUN передаётся в lwIP. Имя tun_init_nat не означает
|
||||
обмена через router нужен instance. Mappings содержат порты в host byte order,
|
||||
адрес назначения — IPv4-строку.
|
||||
|
||||
Критическая ошибка TUN/lwIP/пула возвращает NULL. Ошибка отдельного listener или
|
||||
router bind не отменяет создание всего клиента; проверять конкретные listener handles
|
||||
и диагностику. UDP/ICMP инициализируются только для TUN после успешного TCP bind.
|
||||
Все заданные SOCKS/HTTP listeners, TUN mappings, TUN/lwIP/пулы и TCP router binding
|
||||
обязательны. Ошибка любого шага возвращает NULL и освобождает уже созданные ресурсы.
|
||||
Повторное создание клиента или занятой binding отклоняются. UDP/ICMP создаёт владелец
|
||||
instance после успешного создания TCP-модулей, если есть TUN либо включён exit.
|
||||
|
||||
Клиент привязывается к `ETCP_RT_ID_TCP_PROXY_CLIENT` (0x08), сервер — к
|
||||
`ETCP_RT_ID_TCP_PROXY_SERVER` (0x04). Генератор stream_id общий для TUN/SOCKS/HTTP,
|
||||
@@ -81,7 +82,7 @@ CLOSE/ERROR при неудаче отправки могут повторять
|
||||
Пустое уведомление router (`ROUTER_SVC_HDR_SIZE=26`, без TCP command/sid) удаляет
|
||||
все lwIP/SOCKS/HTTP потоки клиента к настроенному exit. Это не 9-байтовый wire CLOSE_ALL.
|
||||
|
||||
`destroy` снимает TCP binding, закрывает listeners/клиентов, освобождает lwIP/TUN/пул.
|
||||
Общие UDP/ICMP уничтожаются только при выключенном сервере того же instance.
|
||||
`destroy` снимает только собственный TCP binding, закрывает listeners/клиентов,
|
||||
освобождает lwIP/TUN/пул. Общие UDP/ICMP принадлежат instance и сохраняются.
|
||||
Владелец затем сам обнуляет `inst->tcp_proxy_client`. Все callbacks и очистка выполняются
|
||||
в uasync; уничтожать клиента следует вне его активного callback.
|
||||
Reference in new issue
Block a user