Define instance callback dispatch lifetime for safe unsubscription

This commit is contained in:
evgeny committed 2026-10-23 22:39:06 +02:00
1 parent d0ee0341c5
commit 5178f7abc6
2 files changed
+6

No files matched your search

+5
View File
@@ -161,6 +161,11 @@ struct etcp_inst_cbk_entry {
struct etcp_inst_cbk_entry* next;
};
/* Внутренняя очистка снятых instance-подписок после рассылки; при depth>0 ничего не освобождает.
* Во время callbacks remove сразу отключает запись, память сохраняется до выхода из внешней рассылки.
* Новые подписки добавляются в голову и не участвуют в уже начатом обходе. */
void etcp_instance_callbacks_collect(struct UTUN_INSTANCE* inst);
// ---- Per-connection unified callback API ----
/**
* @brief Зарегистрировать per-connection коллбэк с маской событий
+1
View File
@@ -173,6 +173,7 @@ struct UTUN_INSTANCE {
struct etcp_link_status_cbk_entry* link_status_cbks;
struct etcp_status_cbk_entry* conn_status_cbks; // instance-level: NEW/UP/DOWN/DELETE
struct etcp_socket_cbk_entry* socket_cbks; // instance-level: socket ADDR/STATUS changes
unsigned etcp_callbacks_depth; // Вложенность ETCP-рассылок: снятые подписки освобождаются при выходе из внешней
struct nodeinfo_cbk_entry* nodeinfo_cbks; // глобальная подписка на изменения nodeinfo
void* test_user_ptr; // Generic user pointer (used by tests)