|
|
|
@ -701,33 +701,40 @@ static void call_ng_flags_flags(struct sdp_ng_flags *out, str *s, void *dummy) {
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "SDES-", ng_sdes_option, NULL))
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "codec-strip-", call_ng_flags_str_ht, &out->codec_strip))
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "codec-offer-", call_ng_flags_codec_list, &out->codec_offer))
|
|
|
|
|
return;
|
|
|
|
|
if (out->opmode == OP_OFFER) {
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "codec-strip-", call_ng_flags_str_ht,
|
|
|
|
|
&out->codec_strip))
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "codec-offer-", call_ng_flags_codec_list,
|
|
|
|
|
&out->codec_offer))
|
|
|
|
|
return;
|
|
|
|
|
#ifdef WITH_TRANSCODING
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "transcode-", call_ng_flags_codec_list, &out->codec_transcode))
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "codec-transcode-", call_ng_flags_codec_list,
|
|
|
|
|
&out->codec_transcode))
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "codec-mask-", call_ng_flags_str_ht, &out->codec_mask))
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "codec-set-", call_ng_flags_str_ht_split,
|
|
|
|
|
&out->codec_set))
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "transcode-", call_ng_flags_codec_list,
|
|
|
|
|
&out->codec_transcode))
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "codec-transcode-", call_ng_flags_codec_list,
|
|
|
|
|
&out->codec_transcode))
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "codec-mask-", call_ng_flags_str_ht,
|
|
|
|
|
&out->codec_mask))
|
|
|
|
|
return;
|
|
|
|
|
if (call_ng_flags_prefix(out, s, "codec-set-", call_ng_flags_str_ht_split,
|
|
|
|
|
&out->codec_set))
|
|
|
|
|
return;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ilog(LOG_WARN, "Unknown flag encountered: '" STR_FORMAT "'",
|
|
|
|
|
STR_FMT(s));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
static void call_ng_process_flags(struct sdp_ng_flags *out, bencode_item_t *input) {
|
|
|
|
|
static void call_ng_process_flags(struct sdp_ng_flags *out, bencode_item_t *input, enum call_opmode opmode) {
|
|
|
|
|
bencode_item_t *list, *it, *dict;
|
|
|
|
|
int diridx;
|
|
|
|
|
str s;
|
|
|
|
|
|
|
|
|
|
ZERO(*out);
|
|
|
|
|
out->opmode = opmode;
|
|
|
|
|
|
|
|
|
|
out->trust_address = trust_address_def;
|
|
|
|
|
out->dtls_passive = dtls_passive_def;
|
|
|
|
@ -805,7 +812,7 @@ static void call_ng_process_flags(struct sdp_ng_flags *out, bencode_item_t *inpu
|
|
|
|
|
STR_FMT(&s));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((dict = bencode_dictionary_get_expect(input, "codec", BENCODE_DICTIONARY))) {
|
|
|
|
|
if (opmode == OP_OFFER && (dict = bencode_dictionary_get_expect(input, "codec", BENCODE_DICTIONARY))) {
|
|
|
|
|
call_ng_flags_list(out, dict, "strip", call_ng_flags_str_ht, &out->codec_strip);
|
|
|
|
|
call_ng_flags_list(out, dict, "offer", call_ng_flags_codec_list, &out->codec_offer);
|
|
|
|
|
#ifdef WITH_TRANSCODING
|
|
|
|
@ -910,8 +917,7 @@ static const char *call_offer_answer_ng(bencode_item_t *input,
|
|
|
|
|
bencode_dictionary_get_str(input, "via-branch", &viabranch);
|
|
|
|
|
bencode_dictionary_get_str(input, "label", &label);
|
|
|
|
|
|
|
|
|
|
call_ng_process_flags(&flags, input);
|
|
|
|
|
flags.opmode = opmode;
|
|
|
|
|
call_ng_process_flags(&flags, input, opmode);
|
|
|
|
|
|
|
|
|
|
if (opmode == OP_OFFER) {
|
|
|
|
|
enum load_limit_reasons limit = call_offer_session_limit();
|
|
|
|
@ -1545,7 +1551,7 @@ const char *call_unblock_dtmf_ng(bencode_item_t *input, bencode_item_t *output)
|
|
|
|
|
if (errstr)
|
|
|
|
|
goto out;
|
|
|
|
|
|
|
|
|
|
call_ng_process_flags(&flags, input);
|
|
|
|
|
call_ng_process_flags(&flags, input, OP_OTHER);
|
|
|
|
|
|
|
|
|
|
if (monologue) {
|
|
|
|
|
ilog(LOG_INFO, "Unblocking directional DTMF (tag '" STR_FORMAT ")",
|
|
|
|
@ -1614,7 +1620,7 @@ const char *call_unblock_media_ng(bencode_item_t *input, bencode_item_t *output)
|
|
|
|
|
if (errstr)
|
|
|
|
|
goto out;
|
|
|
|
|
|
|
|
|
|
call_ng_process_flags(&flags, input);
|
|
|
|
|
call_ng_process_flags(&flags, input, OP_OTHER);
|
|
|
|
|
|
|
|
|
|
if (monologue) {
|
|
|
|
|
ilog(LOG_INFO, "Unblocking directional media (tag '" STR_FORMAT ")",
|
|
|
|
|