diff --git a/gst/rtsp-server/rtsp-client.c b/gst/rtsp-server/rtsp-client.c
index 2badb3e..b033e40 100644
--- a/gst/rtsp-server/rtsp-client.c
+++ b/gst/rtsp-server/rtsp-client.c
@@ -85,9 +85,17 @@ static void
 gst_rtsp_client_finalize (GObject * obj)
 {
   GstRTSPClient *client = GST_RTSP_CLIENT (obj);
+  GList *walk;
 
   g_message ("finalize client %p", client);
 
+  /* remove weak-ref from sessions */  
+  for (walk = client->sessions; walk; walk = g_list_next (walk)) {
+    GstRTSPSession *msession = (GstRTSPSession *) walk->data;
+    g_object_weak_unref (G_OBJECT (msession),
+	(GWeakNotify) client_session_finalized, client);
+  }
+
   g_list_free (client->sessions);
 
   gst_rtsp_connection_free (client->connection);
