summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.com>2012-02-24 20:34:50 -0500
committerOlivier CrĂȘte <olivier.crete@collabora.com>2012-02-24 20:34:50 -0500
commit65707a304bb55a546d79be737d9145cd4b891da9 (patch)
tree6620b0c4f87aa43ea5f29facba3ffda15e6d7c16
parent09069b773167ac1519ef8f4c2d2fd823b090c8e3 (diff)
Fix memory leaks found by valgrind
-rw-r--r--rakia/call-channel.c6
-rw-r--r--rakia/call-stream.c3
-rw-r--r--rakia/sip-session.c16
3 files changed, 22 insertions, 3 deletions
diff --git a/rakia/call-channel.c b/rakia/call-channel.c
index 080427f..89b4887 100644
--- a/rakia/call-channel.c
+++ b/rakia/call-channel.c
@@ -245,13 +245,15 @@ rakia_call_channel_constructed (GObject *obj)
for (i = 0; i < medias->len; i++)
{
RakiaSipMedia *media = g_ptr_array_index (medias, i);
+ gchar *name;
+
if (media)
{
- const gchar *name = g_strdup_printf ("initial_%s_%u",
+ name = g_strdup_printf ("initial_%s_%u",
sip_media_get_media_type_str (media), i + 1);
-
new_content (self, name, media,
TP_CALL_CONTENT_DISPOSITION_INITIAL);
+ g_free (name);
}
}
diff --git a/rakia/call-stream.c b/rakia/call-stream.c
index 000d1c0..4c4a343 100644
--- a/rakia/call-stream.c
+++ b/rakia/call-stream.c
@@ -192,8 +192,8 @@ rakia_call_stream_constructed (GObject *object)
G_TYPE_STRING, stun_server,
G_TYPE_UINT, stun_port,
G_TYPE_INVALID));
- g_free (stun_server);
}
+ g_free (stun_server);
tp_base_media_call_stream_set_stun_servers (bmcs, stun_array);
g_ptr_array_unref (stun_array);
@@ -449,6 +449,7 @@ media_remote_candidates_updated_cb (RakiaSipMedia *media, RakiaCallStream *self)
tp_call_stream_endpoint_add_new_candidate (priv->endpoint,
candidate->component, candidate->ip, candidate->port, info);
+ g_hash_table_unref (info);
}
tp_base_media_call_stream_add_endpoint (bmcs, priv->endpoint);
diff --git a/rakia/sip-session.c b/rakia/sip-session.c
index b52abd0..aeb1506 100644
--- a/rakia/sip-session.c
+++ b/rakia/sip-session.c
@@ -390,6 +390,22 @@ rakia_sip_session_dispose (GObject *object)
tp_clear_object (&self->priv->conn);
+ if (self->priv->remote_sdp != NULL)
+ {
+ self->priv->remote_sdp = NULL;
+ g_assert (self->priv->home != NULL);
+ su_home_unref (self->priv->home);
+ self->priv->home = NULL;
+ }
+
+ if (self->priv->backup_remote_sdp != NULL)
+ {
+ self->priv->backup_remote_sdp = NULL;
+ g_assert (self->priv->backup_home != NULL);
+ su_home_unref (self->priv->backup_home);
+ self->priv->backup_home = NULL;
+ }
+
if (G_OBJECT_CLASS (rakia_sip_session_parent_class)->dispose)
G_OBJECT_CLASS (rakia_sip_session_parent_class)->dispose (object);