|
|
|
@ -1272,7 +1272,8 @@ void call_ng_flags_init(sdp_ng_flags *out, enum call_opmode opmode) { |
|
|
|
} |
|
|
|
|
|
|
|
static void call_ng_dict_iter(sdp_ng_flags *out, bencode_item_t *input, |
|
|
|
void (*callback)(sdp_ng_flags *, str *key, bencode_item_t *value)) |
|
|
|
enum call_opmode opmode, |
|
|
|
void (*callback)(sdp_ng_flags *, str *key, bencode_item_t *value, enum call_opmode _opmode)) |
|
|
|
{ |
|
|
|
if (input->type != BENCODE_DICTIONARY) |
|
|
|
return; |
|
|
|
@ -1287,11 +1288,13 @@ static void call_ng_dict_iter(sdp_ng_flags *out, bencode_item_t *input, |
|
|
|
if (!bencode_get_str(key, &k)) |
|
|
|
continue; |
|
|
|
|
|
|
|
callback(out, &k, value); |
|
|
|
callback(out, &k, value, opmode); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
static void call_ng_codec_flags(sdp_ng_flags *out, str *key, bencode_item_t *value) { |
|
|
|
static void call_ng_codec_flags(sdp_ng_flags *out, str *key, bencode_item_t *value, |
|
|
|
enum call_opmode opmode) |
|
|
|
{ |
|
|
|
switch (__csh_lookup(key)) { |
|
|
|
case CSH_LOOKUP("except"): |
|
|
|
call_ng_flags_str_list(out, value, call_ng_flags_str_ht, &out->codec_except); |
|
|
|
@ -1395,7 +1398,9 @@ static void call_ng_flags_freqs(sdp_ng_flags *out, bencode_item_t *value) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static void call_ng_main_flags(sdp_ng_flags *out, str *key, bencode_item_t *value) { |
|
|
|
static void call_ng_main_flags(sdp_ng_flags *out, str *key, bencode_item_t *value, |
|
|
|
enum call_opmode opmode) |
|
|
|
{ |
|
|
|
str s = STR_NULL; |
|
|
|
bencode_item_t *it; |
|
|
|
|
|
|
|
@ -1480,7 +1485,7 @@ static void call_ng_main_flags(sdp_ng_flags *out, str *key, bencode_item_t *valu |
|
|
|
out->digit = s.s[0]; |
|
|
|
break; |
|
|
|
case CSH_LOOKUP("codec"): |
|
|
|
call_ng_dict_iter(out, value, call_ng_codec_flags); |
|
|
|
call_ng_dict_iter(out, value, opmode, call_ng_codec_flags); |
|
|
|
break; |
|
|
|
case CSH_LOOKUP("command"): |
|
|
|
break; |
|
|
|
@ -1830,9 +1835,9 @@ static void call_ng_main_flags(sdp_ng_flags *out, str *key, bencode_item_t *valu |
|
|
|
assert(dict != NULL); |
|
|
|
|
|
|
|
/* s - parse rtpp flags */ |
|
|
|
parse_rtpp_flags(&s, dict); |
|
|
|
parse_rtpp_flags(&s, dict, opmode, out); |
|
|
|
if (dict && dict->child) |
|
|
|
call_ng_dict_iter(out, dict, call_ng_main_flags); /* recursive */ |
|
|
|
call_ng_dict_iter(out, dict, opmode, call_ng_main_flags); /* recursive */ |
|
|
|
|
|
|
|
break; |
|
|
|
case CSH_LOOKUP("SDES"): |
|
|
|
@ -1977,7 +1982,7 @@ static void call_ng_main_flags(sdp_ng_flags *out, str *key, bencode_item_t *valu |
|
|
|
|
|
|
|
static void call_ng_process_flags(sdp_ng_flags *out, bencode_item_t *input, enum call_opmode opmode) { |
|
|
|
call_ng_flags_init(out, opmode); |
|
|
|
call_ng_dict_iter(out, input, call_ng_main_flags); |
|
|
|
call_ng_dict_iter(out, input, opmode, call_ng_main_flags); |
|
|
|
} |
|
|
|
|
|
|
|
static void ng_sdp_attr_manipulations_free(struct sdp_manipulations * array[__MT_MAX]) { |
|
|
|
|