diff --git a/components/livekit/core/engine.c b/components/livekit/core/engine.c index 7bb739e..0246f31 100644 --- a/components/livekit/core/engine.c +++ b/components/livekit/core/engine.c @@ -1179,21 +1179,27 @@ engine_err_t engine_destroy(engine_handle_t handle) // TODO: Wait for disconnected state or timeout vTaskDelay(pdMS_TO_TICKS(100)); vTaskDelete(eng->task_handle); + eng->task_handle = NULL; } if (eng->timer != NULL) { xTimerDelete(eng->timer, portMAX_DELAY); + eng->timer = NULL; } if (eng->event_queue != NULL) { vQueueDelete(eng->event_queue); + eng->event_queue = NULL; } if (eng->signal_handle != NULL) { signal_destroy(eng->signal_handle); + eng->signal_handle = NULL; } if (eng->pub_peer_handle != NULL) { peer_destroy(eng->pub_peer_handle); + eng->pub_peer_handle = NULL; } if (eng->sub_peer_handle != NULL) { peer_destroy(eng->sub_peer_handle); + eng->sub_peer_handle = NULL; } SAFE_FREE(eng->server_url); SAFE_FREE(eng->token); diff --git a/components/livekit/core/peer.c b/components/livekit/core/peer.c index d442f92..a908dd5 100644 --- a/components/livekit/core/peer.c +++ b/components/livekit/core/peer.c @@ -339,6 +339,9 @@ peer_err_t peer_destroy(peer_handle_t handle) return PEER_ERR_INVALID_ARG; } peer_t *peer = (peer_t *)handle; + if (peer && peer->wait_event) { + media_lib_event_group_destroy(peer->wait_event); + } free(peer); return PEER_ERR_NONE; }