summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabrice Bellet <fabrice@bellet.info>2020-12-13 17:59:41 +0100
committerOlivier CrĂȘte <olivier.crete@ocrete.ca>2021-04-20 19:37:08 +0000
commit3e3a2b62ea811b94ed930c48ad9851fa60b04ba6 (patch)
tree2f0b778c88bebbd5f94159a18ef923a3d66352be
parentbbf7f2d7beb24c7d620e62c2030701e6961a29d4 (diff)
downloadlibnice-3e3a2b62ea811b94ed930c48ad9851fa60b04ba6.tar.gz
agent: avoid leak of turn refreshes
We keep refreshes having the discarding flag set. They may be freed later if the agent main context remains alive after agent deletion.
-rw-r--r--agent/agent.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/agent/agent.c b/agent/agent.c
index c15f835..8d2349a 100644
--- a/agent/agent.c
+++ b/agent/agent.c
@@ -5629,6 +5629,15 @@ nice_agent_dispose (GObject *object)
"using nice_agent_close_async() to prune them before releasing the "
"agent.", agent);
+ for (i = agent->refresh_list; i;) {
+ GSList *next = i->next;
+ CandidateRefresh *refresh = i->data;
+
+ if (!refresh->disposing)
+ refresh_free (agent, refresh);
+ i = next;
+ }
+
g_free (agent->stun_server_ip);
agent->stun_server_ip = NULL;