diff --git a/daemon/call.c b/daemon/call.c index 638d99dc3..ba6c7ad58 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -5502,6 +5502,8 @@ static void __call_free(call_t *c) { //ilog(LOG_DEBUG, "freeing main call struct"); + memory_arena = &c->buffer; + call_checkpoint_free_all(c); obj_release(c->dtls_cert); mqtt_timer_stop(&c->mqtt_timer); @@ -5538,7 +5540,9 @@ static void __call_free(call_t *c) { bufferpool_unref(ps->stats_out); } + memory_arena = NULL; arena_free(&c->buffer); + ice_fragments_cleanup(c->sdp_fragments, true); t_hash_table_destroy(c->sdp_fragments); rwlock_destroy(&c->master_lock); diff --git a/include/call.h b/include/call.h index 9246d7ebf..b9b8589a7 100644 --- a/include/call.h +++ b/include/call.h @@ -1059,7 +1059,7 @@ INLINE void call_memory_arena_release(void) { return; obj_put(call_memory_arena); call_memory_arena = NULL; - memory_arena = &rtpe_arena; + memory_arena = NULL; } INLINE void call_memory_arena_set(call_t *c) { call_memory_arena_release();