Release remaining transport subscriptions at instance destruction

This commit is contained in:
evgeny committed 2026-10-26 09:08:42 +01:00
1 parent 1d92591780
commit fd93f39c78
2 files changed
+18 -1

No files matched your search

+17
View File
@@ -624,6 +624,23 @@ static void instance_destroy(struct UTUN_INSTANCE* instance, int owns_config) {
DEBUG_INFO(DEBUG_CATEGORY_SYS, "[INSTANCE_DESTROY] Freeing instance memory");
// Cleanup nodeinfo callback chain
while (instance->new_conn_cbks) {
struct etcp_inst_cbk_entry* entry = instance->new_conn_cbks;
instance->new_conn_cbks = entry->next; u_free(entry);
}
while (instance->link_status_cbks) {
struct etcp_link_status_cbk_entry* entry = instance->link_status_cbks;
instance->link_status_cbks = entry->next; u_free(entry);
}
while (instance->conn_status_cbks) {
struct etcp_status_cbk_entry* entry = instance->conn_status_cbks;
instance->conn_status_cbks = entry->next; u_free(entry);
}
while (instance->socket_cbks) {
struct etcp_socket_cbk_entry* entry = instance->socket_cbks;
instance->socket_cbks = entry->next; u_free(entry);
}
DEBUG_DEBUG(DEBUG_CATEGORY_SYS, "instance transport subscriptions released");
while (instance->nodeinfo_cbks) {
struct nodeinfo_cbk_entry* r = instance->nodeinfo_cbks;
instance->nodeinfo_cbks = r->next; u_free(r);
+1 -1
View File
@@ -149,7 +149,7 @@ static void test_reload(struct UASYNC* ua) {
static void test_headless(struct UASYNC* ua) {
char text[1024];
snprintf(text, sizeof(text), "[global]\nmy_private_key=%s\nmy_public_key=%s\nclient_type=server\n"
snprintf(text, sizeof(text), "[global]\nmy_private_key=%s\nmy_public_key=%s\nclient_type=0\n"
"[chatserver]\nheadless_control_bind=127.0.0.1:0\ncall_audio_bind=127.0.0.1:0\nradio_audio_bind=127.0.0.1:0\n",
private_key, public_key);
struct UTUN_INSTANCE* inst = utun_instance_create_from_str(ua, text); assert(inst && !utun_core_start(inst));