|
|
|
@ -1398,27 +1398,26 @@ static void call_ng_parse_block_mode(str *s, enum block_dtmf_mode *output) { |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
static void call_ng_flags_freqs(sdp_ng_flags *out, bencode_item_t *value) { |
|
|
|
static void call_ng_flags_freqs(ng_parser_ctx_t *ctx, bencode_item_t *value); |
|
|
|
static void call_ng_flags_freqs_iter(ng_parser_ctx_t *ctx, bencode_item_t *item, helper_arg arg) { |
|
|
|
call_ng_flags_freqs(ctx, item); |
|
|
|
} |
|
|
|
static void call_ng_flags_freqs(ng_parser_ctx_t *ctx, bencode_item_t *value) { |
|
|
|
sdp_ng_flags *out = ctx->flags; |
|
|
|
const ng_parser_t *parser = ctx->parser; |
|
|
|
unsigned int val; |
|
|
|
|
|
|
|
switch (value->type) { |
|
|
|
case BENCODE_INTEGER:; |
|
|
|
val = value->value; |
|
|
|
if (parser->is_int(value)) { |
|
|
|
val = parser->get_int(value); |
|
|
|
g_array_append_val(out->frequencies, val); |
|
|
|
} |
|
|
|
else if (parser->is_list(value)) |
|
|
|
parser->list_iter(ctx, value, NULL, call_ng_flags_freqs_iter, NULL); |
|
|
|
else { |
|
|
|
val = parser->get_int_str(value, 0); |
|
|
|
if (val) |
|
|
|
g_array_append_val(out->frequencies, val); |
|
|
|
break; |
|
|
|
case BENCODE_LIST: |
|
|
|
for (bencode_item_t *it = value->child; it; it = it->sibling) |
|
|
|
call_ng_flags_freqs(out, it); |
|
|
|
break; |
|
|
|
case BENCODE_STRING:; |
|
|
|
str s, token; |
|
|
|
bencode_get_str(value, &s); |
|
|
|
while (str_token_sep(&token, &s, ',')) { |
|
|
|
val = str_to_i(&token, 0); |
|
|
|
g_array_append_val(out->frequencies, val); |
|
|
|
} |
|
|
|
break; |
|
|
|
default: |
|
|
|
else |
|
|
|
ilog(LOG_WARN, "Invalid content type in `frequencies` list"); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1629,7 +1628,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) { |
|
|
|
break; |
|
|
|
case CSH_LOOKUP("frequency"): |
|
|
|
case CSH_LOOKUP("frequencies"): |
|
|
|
call_ng_flags_freqs(out, value); |
|
|
|
call_ng_flags_freqs(ctx, value); |
|
|
|
break; |
|
|
|
case CSH_LOOKUP("from-interface"): |
|
|
|
out->direction[0] = s; |
|
|
|
|