diff --git a/src/utun_instance.h b/src/utun_instance.h index 9617c6be..7314ed45 100644 --- a/src/utun_instance.h +++ b/src/utun_instance.h @@ -315,8 +315,8 @@ struct UTUN_INSTANCE* utun_instance_create_from_str(struct UASYNC* ua, const cha * Выполняет drain отложенных callbacks и join media workers; вызывать вне callbacks и без параллельных обращений. * Заимствованные SQLite statements/backup должны быть закрыты caller; BUSY логируется и переводится в close_v2. */ void utun_instance_destroy(struct UTUN_INSTANCE* instance); -/* Запустить репликацию, NCD/keepalive, [client], control и время; без вступления в группы. Успех: running=core_started=1. - * Повтор успешного start — 0. Ошибка — -1; уже подготовленные ресурсы остаются для retry/destroy. +/* Запустить репликацию, NCD/keepalive, [client], control и время; без вступления в группы. Первый успех: running=core_started=1. + * При core_started возвращает 0 без изменения running. Ошибка — -1; подготовленные ресурсы остаются для retry/destroy. * Отказ NTP/STUN не фатален. NULL/разрушаемый instance отклоняется. */ int utun_core_start(struct UTUN_INSTANCE* instance); /* Запустить UTUN-группу, TUN/NAT по конфигу и отдельные запросы к [client]. Нужны core_start и топология. diff --git a/src/utun_instance_doc.md b/src/utun_instance_doc.md index 6af9be2b..f1d9977b 100644 --- a/src/utun_instance_doc.md +++ b/src/utun_instance_doc.md @@ -28,7 +28,8 @@ uasync_destroy(ua, 0); Цикл запускает приложение; функции `utun_instance_run` нет. `utun_instance_stop` только снимает `running` и вызывает wakeup. Это не stop сервисов. -При общем UASYNC решение о продолжении poll принимает его владелец. +Повторный core_start при уже установленном core_started не поднимает running после stop. +Решение о продолжении poll принимает владелец UASYNC, в том числе при нескольких instance. ## Конструкторы @@ -60,7 +61,7 @@ create. Недоступность ICMP raw socket по правам/подде | API | Ресурсы и результат | |---|---| -| `utun_core_start` | db_sync, NCD/keepalive, постоянные транспорты `[client]`, control, время, broadcast/radio и STUN. Успех задаёт `core_started=running=1` | +| `utun_core_start` | db_sync, NCD/keepalive, постоянные транспорты `[client]`, control, время, broadcast/radio и STUN. Первый успех задаёт `core_started=running=1` | | `utun_service_start` | Требует core и топологию. Создаёт UTUN-группу, DATA binding, опциональные TUN/маршруты/NAT и отдельные групповые запросы к `[client]` | | `chat_service_start` | Объявлен в chat_core.h. Требует core и SQLite. Поднимает CHAT-синхронизацию, stream/media/DM/member_files/call/radio-call, headless и LAN | | `utun_instance_init` | Последовательно core, затем UTUN при наличии топологии, затем чат при `chatserver_enabled` |