gst_rtsp_base64_encode (user_pass, strlen (user_pass));
gchar *auth_string = g_strdup_printf ("Basic %s", user_pass64);
- gst_rtsp_message_add_header (message, GST_RTSP_HDR_AUTHORIZATION,
+ gst_rtsp_message_take_header (message, GST_RTSP_HDR_AUTHORIZATION,
auth_string);
g_free (user_pass);
g_free (user_pass64);
- g_free (auth_string);
break;
}
case GST_RTSP_AUTH_DIGEST:{
g_free (auth_string);
auth_string = auth_string2;
}
- gst_rtsp_message_add_header (message, GST_RTSP_HDR_AUTHORIZATION,
+ gst_rtsp_message_take_header (message, GST_RTSP_HDR_AUTHORIZATION,
auth_string);
- g_free (auth_string);
break;
}
default:
*pos = '\0';
}
g_strchomp (header);
- gst_rtsp_message_add_header (msg, GST_RTSP_HDR_SESSION, header);
- g_free (header);
+ gst_rtsp_message_take_header (msg, GST_RTSP_HDR_SESSION, header);
}
/* FIXME copy more headers? */
}
/**
- * gst_rtsp_message_add_header:
+ * gst_rtsp_message_take_header:
* @msg: a #GstRTSPMessage
* @field: a #GstRTSPHeaderField
* @value: the value of the header
*
- * Add a header with key @field and @value to @msg.
+ * Add a header with key @field and @value to @msg. This function takes
+ * ownership of @value.
*
* Returns: a #GstRTSPResult.
+ *
+ * Since: 0.10.23
*/
GstRTSPResult
-gst_rtsp_message_add_header (GstRTSPMessage * msg, GstRTSPHeaderField field,
- const gchar * value)
+gst_rtsp_message_take_header (GstRTSPMessage * msg, GstRTSPHeaderField field,
+ gchar * value)
{
RTSPKeyValue key_value;
g_return_val_if_fail (value != NULL, GST_RTSP_EINVAL);
key_value.field = field;
- key_value.value = g_strdup (value);
+ key_value.value = value;
g_array_append_val (msg->hdr_fields, key_value);
}
/**
+ * gst_rtsp_message_add_header:
+ * @msg: a #GstRTSPMessage
+ * @field: a #GstRTSPHeaderField
+ * @value: the value of the header
+ *
+ * Add a header with key @field and @value to @msg. This function takes a copy
+ * of @value.
+ *
+ * Returns: a #GstRTSPResult.
+ */
+GstRTSPResult
+gst_rtsp_message_add_header (GstRTSPMessage * msg, GstRTSPHeaderField field,
+ const gchar * value)
+{
+ return gst_rtsp_message_take_header (msg, field, g_strdup (value));
+}
+
+/**
* gst_rtsp_message_remove_header:
* @msg: a #GstRTSPMessage
* @field: a #GstRTSPHeaderField
GstRTSPResult gst_rtsp_message_add_header (GstRTSPMessage *msg,
GstRTSPHeaderField field,
const gchar *value);
+GstRTSPResult gst_rtsp_message_take_header (GstRTSPMessage *msg,
+ GstRTSPHeaderField field,
+ gchar *value);
GstRTSPResult gst_rtsp_message_remove_header (GstRTSPMessage *msg,
GstRTSPHeaderField field,
gint indx);