Define instance callback dispatch lifetime for safe unsubscription
This commit is contained in:
1 parent
d0ee0341c5
commit
5178f7abc6
2 files changed
+6
No files matched your search
@@ -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 коллбэк с маской событий
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in new issue
Block a user