diff options
author | Tim-Philipp Müller <tim@centricular.com> | 2015-02-09 18:01:30 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2015-02-09 18:03:43 +0000 |
commit | 1b4bd6e451fa9f6a7d33447a4f90ff7f0d266752 (patch) | |
tree | c6cd5df958d14f4872c44472c9efc80da7d9c564 | |
parent | ef7f537a80d2d8813b169f5efe28bf7c7916b0d6 (diff) |
rtspmessage: map headers we know that are added by string to their enum
That way we can look them up by their field enum later as well.
-rw-r--r-- | gst-libs/gst/rtsp/gstrtspmessage.c | 6 | ||||
-rw-r--r-- | tests/check/libs/rtsp.c | 27 |
2 files changed, 33 insertions, 0 deletions
diff --git a/gst-libs/gst/rtsp/gstrtspmessage.c b/gst-libs/gst/rtsp/gstrtspmessage.c index c00614558..a326e5af1 100644 --- a/gst-libs/gst/rtsp/gstrtspmessage.c +++ b/gst-libs/gst/rtsp/gstrtspmessage.c @@ -637,10 +637,16 @@ GstRTSPResult gst_rtsp_message_add_header_by_name (GstRTSPMessage * msg, const gchar * header, const gchar * value) { + GstRTSPHeaderField field; + g_return_val_if_fail (msg != NULL, GST_RTSP_EINVAL); g_return_val_if_fail (header != NULL, GST_RTSP_EINVAL); g_return_val_if_fail (value != NULL, GST_RTSP_EINVAL); + field = gst_rtsp_find_header_field (header); + if (field != GST_RTSP_HDR_INVALID) + return gst_rtsp_message_take_header (msg, field, g_strdup (value)); + return gst_rtsp_message_take_header_by_name (msg, header, g_strdup (value)); } diff --git a/tests/check/libs/rtsp.c b/tests/check/libs/rtsp.c index 68046ad75..0730a318e 100644 --- a/tests/check/libs/rtsp.c +++ b/tests/check/libs/rtsp.c @@ -617,10 +617,37 @@ GST_START_TEST (test_rtsp_message) fail_unless_equals_int (res, GST_RTSP_OK); fail_unless_equals_string (val, "bar.0"); + /* remove all headers for a name */ + res = gst_rtsp_message_remove_header_by_name (msg, "FOO99-Version", -1); + fail_unless_equals_int (res, GST_RTSP_OK); + res = gst_rtsp_message_get_header_by_name (msg, "FOO99-Version", &val, 0); + fail_unless_equals_int (res, GST_RTSP_ENOTIMPL); + /* gst_rtsp_message_dump (msg); */ res = gst_rtsp_message_free (msg); fail_unless_equals_int (res, GST_RTSP_OK); + + /* === */ + + res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY, + "rtsp://foo.bar:8554/test"); + fail_unless_equals_int (res, GST_RTSP_OK); + + res = gst_rtsp_message_add_header_by_name (msg, "CSeq", "3"); + fail_unless_equals_int (res, GST_RTSP_OK); + + res = gst_rtsp_message_get_header (msg, GST_RTSP_HDR_CSEQ, &val, 0); + fail_unless_equals_int (res, GST_RTSP_OK); + fail_unless_equals_string (val, "3"); + + val = NULL; + res = gst_rtsp_message_get_header_by_name (msg, "cseq", &val, 0); + fail_unless_equals_int (res, GST_RTSP_OK); + fail_unless_equals_string (val, "3"); + + res = gst_rtsp_message_free (msg); + fail_unless_equals_int (res, GST_RTSP_OK); } GST_END_TEST; |