GstRTSPClientClass *klass;
gchar *path, *control;
gint matched;
+ gboolean new_session = FALSE;
if (!ctx->uri)
goto no_uri;
/* make sure this client is closed when the session is closed */
client_watch_session (client, session);
+ new_session = TRUE;
/* signal new session */
g_signal_emit (client, gst_rtsp_client_signals[SIGNAL_NEW_SESSION], 0,
session);
ctx->session = session;
}
- if (sessmedia == NULL) {
- /* manage the media in our session now, if not done already */
- sessmedia = gst_rtsp_session_manage_media (session, path, media);
- /* if we stil have no media, error */
- if (sessmedia == NULL)
- goto sessmedia_unavailable;
- } else {
- g_object_unref (media);
- }
-
- ctx->sessmedia = sessmedia;
-
if (!klass->configure_client_media (client, media, stream, ctx))
goto configure_media_failed_no_reply;
goto keymgmt_error;
}
+ if (sessmedia == NULL) {
+ /* manage the media in our session now, if not done already */
+ sessmedia = gst_rtsp_session_manage_media (session, path, media);
+ /* if we stil have no media, error */
+ if (sessmedia == NULL)
+ goto sessmedia_unavailable;
+ } else {
+ g_object_unref (media);
+ }
+
+ ctx->sessmedia = sessmedia;
+
/* set in the session media transport */
trans = gst_rtsp_session_media_set_transport (sessmedia, stream, ct);
cleanup_transport:
gst_rtsp_transport_free (ct);
cleanup_session:
+ if (new_session)
+ gst_rtsp_session_pool_remove (priv->session_pool, session);
g_object_unref (session);
cleanup_path:
g_free (path);
session_pool = gst_rtsp_client_get_session_pool (client);
fail_unless (session_pool != NULL);
/* FIXME: There seems to be a leak of a session here ! */
- /* fail_unless (gst_rtsp_session_pool_get_n_sessions (session_pool) == 0); */
+ fail_unless (gst_rtsp_session_pool_get_n_sessions (session_pool) == 0);
g_object_unref (session_pool);
session_pool = gst_rtsp_client_get_session_pool (client);
fail_unless (session_pool != NULL);
/* FIXME: There seems to be a leak of a session here ! */
- /* fail_unless (gst_rtsp_session_pool_get_n_sessions (session_pool) == 0); */
+ fail_unless (gst_rtsp_session_pool_get_n_sessions (session_pool) == 0);
g_object_unref (session_pool);
session_pool = gst_rtsp_client_get_session_pool (client);
fail_unless (session_pool != NULL);
/* FIXME: There seems to be a leak of a session here ! */
- /* fail_unless (gst_rtsp_session_pool_get_n_sessions (session_pool) == 0); */
+ fail_unless (gst_rtsp_session_pool_get_n_sessions (session_pool) == 0);
g_object_unref (session_pool);