|
|
@ -711,6 +711,9 @@ static void call_ng_flags_replace(struct sdp_ng_flags *out, str *s, void *dummy) |
|
|
static void call_ng_flags_supports(struct sdp_ng_flags *out, str *s, void *dummy) { |
|
|
static void call_ng_flags_supports(struct sdp_ng_flags *out, str *s, void *dummy) { |
|
|
if (!str_cmp(s, "load limit")) |
|
|
if (!str_cmp(s, "load limit")) |
|
|
out->supports_load_limit = 1; |
|
|
out->supports_load_limit = 1; |
|
|
|
|
|
else |
|
|
|
|
|
ilog(LOG_INFO | LOG_FLAG_LIMIT, "Optional feature '" STR_FORMAT "' not supported", |
|
|
|
|
|
STR_FMT(s)); |
|
|
} |
|
|
} |
|
|
static str *str_dup_escape(const str *s) { |
|
|
static str *str_dup_escape(const str *s) { |
|
|
str *ret = str_dup(s); |
|
|
str *ret = str_dup(s); |
|
|
@ -987,13 +990,13 @@ static void call_ng_codec_flags(struct sdp_ng_flags *out, str *key, bencode_item |
|
|
switch (__csh_lookup(key)) { |
|
|
switch (__csh_lookup(key)) { |
|
|
case CSH_LOOKUP("strip"): |
|
|
case CSH_LOOKUP("strip"): |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, &out->codec_strip); |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, &out->codec_strip); |
|
|
break; |
|
|
|
|
|
|
|
|
return; |
|
|
case CSH_LOOKUP("offer"): |
|
|
case CSH_LOOKUP("offer"): |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, &out->codec_offer); |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, &out->codec_offer); |
|
|
break; |
|
|
|
|
|
|
|
|
return; |
|
|
case CSH_LOOKUP("except"): |
|
|
case CSH_LOOKUP("except"): |
|
|
call_ng_flags_list(out, value, call_ng_flags_str_ht, &out->codec_except); |
|
|
call_ng_flags_list(out, value, call_ng_flags_str_ht, &out->codec_except); |
|
|
break; |
|
|
|
|
|
|
|
|
return; |
|
|
} |
|
|
} |
|
|
#ifdef WITH_TRANSCODING |
|
|
#ifdef WITH_TRANSCODING |
|
|
if (out->opmode == OP_OFFER || out->opmode == OP_REQUEST || out->opmode == OP_PUBLISH) { |
|
|
if (out->opmode == OP_OFFER || out->opmode == OP_REQUEST || out->opmode == OP_PUBLISH) { |
|
|
@ -1001,22 +1004,34 @@ static void call_ng_codec_flags(struct sdp_ng_flags *out, str *key, bencode_item |
|
|
case CSH_LOOKUP("transcode"): |
|
|
case CSH_LOOKUP("transcode"): |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, |
|
|
&out->codec_transcode); |
|
|
&out->codec_transcode); |
|
|
break; |
|
|
|
|
|
|
|
|
return; |
|
|
case CSH_LOOKUP("mask"): |
|
|
case CSH_LOOKUP("mask"): |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, &out->codec_mask); |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, &out->codec_mask); |
|
|
break; |
|
|
|
|
|
|
|
|
return; |
|
|
case CSH_LOOKUP("set"): |
|
|
case CSH_LOOKUP("set"): |
|
|
call_ng_flags_list(out, value, call_ng_flags_str_ht_split, &out->codec_set); |
|
|
call_ng_flags_list(out, value, call_ng_flags_str_ht_split, &out->codec_set); |
|
|
break; |
|
|
|
|
|
|
|
|
return; |
|
|
case CSH_LOOKUP("accept"): |
|
|
case CSH_LOOKUP("accept"): |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, &out->codec_accept); |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, &out->codec_accept); |
|
|
break; |
|
|
|
|
|
|
|
|
return; |
|
|
case CSH_LOOKUP("consume"): |
|
|
case CSH_LOOKUP("consume"): |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, &out->codec_consume); |
|
|
call_ng_flags_list(out, value, call_ng_flags_esc_str_list, &out->codec_consume); |
|
|
break; |
|
|
|
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
// silence warnings |
|
|
|
|
|
switch (__csh_lookup(key)) { |
|
|
|
|
|
case CSH_LOOKUP("transcode"): |
|
|
|
|
|
case CSH_LOOKUP("mask"): |
|
|
|
|
|
case CSH_LOOKUP("set"): |
|
|
|
|
|
case CSH_LOOKUP("accept"): |
|
|
|
|
|
case CSH_LOOKUP("consume"): |
|
|
|
|
|
return; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
ilog(LOG_WARN, "Unknown 'codec' operation encountered: '" STR_FORMAT "'", STR_FMT(key)); |
|
|
} |
|
|
} |
|
|
static void call_ng_parse_block_mode(str *s, enum block_dtmf_mode *output) { |
|
|
static void call_ng_parse_block_mode(str *s, enum block_dtmf_mode *output) { |
|
|
switch (__csh_lookup(s)) { |
|
|
switch (__csh_lookup(s)) { |
|
|
@ -1344,6 +1359,9 @@ static void call_ng_main_flags(struct sdp_ng_flags *out, str *key, bencode_item_ |
|
|
case CSH_LOOKUP("both"): |
|
|
case CSH_LOOKUP("both"): |
|
|
out->media_echo = MEO_BOTH; |
|
|
out->media_echo = MEO_BOTH; |
|
|
break; |
|
|
break; |
|
|
|
|
|
default: |
|
|
|
|
|
ilog(LOG_WARN, "Unknown 'media-echo' flag encountered: '" STR_FORMAT "'", |
|
|
|
|
|
STR_FMT(&s)); |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
case CSH_LOOKUP("frequency"): |
|
|
case CSH_LOOKUP("frequency"): |
|
|
@ -1414,6 +1432,10 @@ static void call_ng_main_flags(struct sdp_ng_flags *out, str *key, bencode_item_ |
|
|
out->delay_buffer = bencode_get_integer_str(value, out->delay_buffer); |
|
|
out->delay_buffer = bencode_get_integer_str(value, out->delay_buffer); |
|
|
break; |
|
|
break; |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
case CSH_LOOKUP("command"): |
|
|
|
|
|
break; |
|
|
|
|
|
default: |
|
|
|
|
|
ilog(LOG_WARN, "Unknown dictionary key encountered: '" STR_FORMAT "'", STR_FMT(key)); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|