{
GstRTSPClientPrivate *priv = client->priv;
GstRTSPMessage message = { 0 };
+ GstRTSPResult res = GST_RTSP_OK;
GstMapInfo map_info;
guint8 *data;
guint usize;
g_mutex_lock (&priv->send_lock);
if (priv->send_func)
- priv->send_func (client, &message, FALSE, priv->send_data);
+ res = priv->send_func (client, &message, FALSE, priv->send_data);
g_mutex_unlock (&priv->send_lock);
gst_rtsp_message_steal_body (&message, &data, &usize);
gst_rtsp_message_unset (&message);
- return TRUE;
+ return res == GST_RTSP_OK;
}
/**
guint timeout;
gboolean timeout_always_visible;
GTimeVal create_time; /* immutable */
+ GMutex last_access_lock;
GTimeVal last_access;
gint expire_count;
GST_INFO ("init session %p", session);
g_mutex_init (&priv->lock);
+ g_mutex_init (&priv->last_access_lock);
priv->timeout = DEFAULT_TIMEOUT;
g_get_current_time (&priv->create_time);
gst_rtsp_session_touch (session);
/* free session id */
g_free (priv->sessionid);
+ g_mutex_clear (&priv->last_access_lock);
g_mutex_clear (&priv->lock);
G_OBJECT_CLASS (gst_rtsp_session_parent_class)->finalize (obj);
priv = session->priv;
- g_mutex_lock (&priv->lock);
+ g_mutex_lock (&priv->last_access_lock);
g_get_current_time (&priv->last_access);
- g_mutex_unlock (&priv->lock);
+ g_mutex_unlock (&priv->last_access_lock);
}
/**
priv = session->priv;
- g_mutex_lock (&priv->lock);
+ g_mutex_lock (&priv->last_access_lock);
if (g_atomic_int_get (&priv->expire_count) != 0) {
/* touch session when the expire count is not 0 */
g_get_current_time (&priv->last_access);
last_access = GST_TIMEVAL_TO_TIME (priv->last_access);
/* add timeout allow for 5 seconds of extra time */
last_access += priv->timeout * GST_SECOND + (5 * GST_SECOND);
- g_mutex_unlock (&priv->lock);
+ g_mutex_unlock (&priv->last_access_lock);
now_ns = GST_TIMEVAL_TO_TIME (*now);
priv->send_rtp (buffer, priv->transport->interleaved.min,
priv->user_data);
+ if (res)
+ gst_rtsp_stream_transport_keep_alive (trans);
+
return res;
}
priv->send_rtcp (buffer, priv->transport->interleaved.max,
priv->user_data);
+ if (res)
+ gst_rtsp_stream_transport_keep_alive (trans);
+
return res;
}