client: remove watch of the second client after http tunnel setup
authorOgnyan Tonchev <ognyan@axis.com>
Wed, 2 Apr 2014 10:03:32 +0000 (12:03 +0200)
committerWim Taymans <wtaymans@redhat.com>
Tue, 8 Apr 2014 14:17:30 +0000 (16:17 +0200)
The second client will be freed after the HTTP tunnel has been set up.
Make sure it's RTSP watch is never dispatched again.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727488

gst/rtsp-server/rtsp-client.c

index 30c6b4d..c3c34eb 100644 (file)
@@ -3031,9 +3031,15 @@ tunnel_complete (GstRTSPWatch * watch, gpointer user_data)
 
   /* merge the tunnels into the first client */
   gst_rtsp_connection_do_tunnel (opriv->connection, priv->connection);
+  gst_rtsp_watch_reset (priv->watch);
   gst_rtsp_watch_reset (opriv->watch);
   g_object_unref (oclient);
 
+  /* the old client owns the tunnel now, the new one will be freed */
+  g_source_destroy ((GSource *) priv->watch);
+  priv->watch = NULL;
+  gst_rtsp_client_set_send_func (client, NULL, NULL, NULL);
+
   return GST_RTSP_OK;
 
   /* ERRORS */