|
|
|
@ -347,6 +347,22 @@ static bool sdp_manipulate_remove_c(const char *attr_name, sdp_ng_flags *flags,
|
|
|
|
|
return sdp_manipulate_remove(sdp_manipulations, &STR_INIT(attr_name));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Checks whether an attribute removal request exists for a given session level.
|
|
|
|
|
* `attr_name` must be without `a=`.
|
|
|
|
|
*/
|
|
|
|
|
static bool sdp_manipulate_remove_attr(struct sdp_manipulations *sdp_manipulations,
|
|
|
|
|
const struct sdp_attribute *attr)
|
|
|
|
|
{
|
|
|
|
|
if (sdp_manipulate_remove(sdp_manipulations, &attr->key))
|
|
|
|
|
return true;
|
|
|
|
|
if (sdp_manipulate_remove(sdp_manipulations, &attr->name))
|
|
|
|
|
return true;
|
|
|
|
|
if (sdp_manipulate_remove(sdp_manipulations, &attr->line_value))
|
|
|
|
|
return true;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Adds values into a requested session level (global, audio, video)
|
|
|
|
|
*/
|
|
|
|
@ -2380,7 +2396,7 @@ static int process_session_attributes(struct sdp_chopper *chop, struct sdp_attri
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* if attr is supposed to be removed don't add to the chop->output */
|
|
|
|
|
if (sdp_manipulate_remove(sdp_manipulations, &attr->line_value))
|
|
|
|
|
if (sdp_manipulate_remove_attr(sdp_manipulations, attr))
|
|
|
|
|
goto strip;
|
|
|
|
|
|
|
|
|
|
/* if attr is supposed to be substituted don't add to the chop->output, but add another value */
|
|
|
|
@ -2530,7 +2546,7 @@ static int process_media_attributes(struct sdp_chopper *chop, struct sdp_media *
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* if attr is supposed to be removed don't add to the chop->output */
|
|
|
|
|
if (sdp_manipulate_remove(sdp_manipulations, &attr->line_value))
|
|
|
|
|
if (sdp_manipulate_remove_attr(sdp_manipulations, attr))
|
|
|
|
|
goto strip;
|
|
|
|
|
|
|
|
|
|
/* if attr is supposed to be substituted don't add to the chop->output, but add another value */
|
|
|
|
|