From: <wt...@ke...> - 2009-03-25 15:40:10
|
Module: gst-plugins-ugly Branch: master Commit: 1731c58b9b7d021683bfc18a8dfbcc10b152e5e7 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-ugly/commit/?id=1731c58b9b7d021683bfc18a8dfbcc10b152e5e7 Author: Wim Taymans <wim...@co...> Date: Wed Mar 25 16:39:06 2009 +0100 realrtsp: add more headers Parse the ETag from the describe method and pass the sessionid as the value for the If-Match header is subsequent setup calls. Fixes support for more RealMedia RTSP streams. --- gst/realmedia/rtspreal.c | 16 ++++++++++++++++ gst/realmedia/rtspreal.h | 1 + 2 files changed, 17 insertions(+), 0 deletions(-) diff --git a/gst/realmedia/rtspreal.c b/gst/realmedia/rtspreal.c index 9de00a9..9b5228f 100644 --- a/gst/realmedia/rtspreal.c +++ b/gst/realmedia/rtspreal.c @@ -127,6 +127,8 @@ rtsp_ext_real_before_send (GstRTSPExtension * ext, GstRTSPMessage * request) "Linux_2.4_6.0.9.1235_play32_RN01_EN_586"); gst_rtsp_message_add_header (request, GST_RTSP_HDR_MAX_ASM_WIDTH, "1"); gst_rtsp_message_add_header (request, GST_RTSP_HDR_LANGUAGE, "en-US"); + gst_rtsp_message_add_header (request, GST_RTSP_HDR_REQUIRE, + "com.real.retain-entity-for-setup"); break; } case GST_RTSP_SETUP: @@ -136,6 +138,7 @@ rtsp_ext_real_before_send (GstRTSPExtension * ext, GstRTSPMessage * request) g_strdup_printf ("%s, sd=%s", ctx->challenge2, ctx->checksum); gst_rtsp_message_add_header (request, GST_RTSP_HDR_REAL_CHALLENGE2, value); + gst_rtsp_message_add_header (request, GST_RTSP_HDR_IF_MATCH, ctx->etag); g_free (value); } break; @@ -169,6 +172,19 @@ rtsp_ext_real_after_send (GstRTSPExtension * ext, GstRTSPMessage * req, ctx->checksum, challenge1); break; } + case GST_RTSP_DESCRIBE: + { + gchar *etag = NULL; + guint len; + + gst_rtsp_message_get_header (resp, GST_RTSP_HDR_ETAG, &etag, 0); + if (etag) { + len = sizeof (ctx->etag); + strncpy (ctx->etag, etag, len); + ctx->etag[len - 1] = '\0'; + } + break; + } default: break; } diff --git a/gst/realmedia/rtspreal.h b/gst/realmedia/rtspreal.h index 9f7dc42..6605f14 100644 --- a/gst/realmedia/rtspreal.h +++ b/gst/realmedia/rtspreal.h @@ -64,6 +64,7 @@ struct _GstRTSPReal { gchar checksum[34]; gchar challenge2[64]; + gchar etag[64]; gboolean isreal; guint n_streams; |