MT#55283 use list iterator for direction=

Change-Id: I797f1f7926eb177ff2d6ab3659415b91ead2d95f
pull/1848/head
Richard Fuchs 11 months ago
parent d007d9733a
commit b826dbddd6

@ -1305,13 +1305,18 @@ void call_ng_flags_init(sdp_ng_flags *out, enum call_opmode opmode) {
out->frequencies = g_array_new(false, false, sizeof(int));
}
void call_ng_direction_flag(sdp_ng_flags *out, bencode_item_t *value)
static void call_ng_direction_flag_iter(ng_parser_ctx_t *ctx, str *s, helper_arg arg) {
if (*arg.i >= 2)
return;
ctx->flags->direction[*arg.i] = *s;
(*arg.i)++;
}
void call_ng_direction_flag(ng_parser_ctx_t *ctx, bencode_item_t *value)
{
if (value->type != BENCODE_LIST)
if (!ctx->parser->is_list(value))
return;
int diridx = 0;
for (bencode_item_t *cit = value->child; cit && diridx < 2; cit = cit->sibling)
bencode_get_str(cit, &out->direction[diridx++]);
ctx->parser->list_iter(ctx, value, call_ng_direction_flag_iter, NULL, &diridx);
}
void call_ng_codec_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
sdp_ng_flags *out = ctx->flags;
@ -1515,7 +1520,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
out->db_id = parser->get_int_str(value, out->db_id);
break;
case CSH_LOOKUP("direction"):
call_ng_direction_flag(out, value);
call_ng_direction_flag(ctx, value);
break;
case CSH_LOOKUP("drop-traffic"):
case CSH_LOOKUP("drop traffic"):

@ -329,5 +329,5 @@ next:;
/* add directions to the root dict */
if (direction && direction->child)
call_ng_direction_flag(ctx->flags, direction);
call_ng_direction_flag(ctx, direction);
}

@ -288,7 +288,7 @@ void call_interfaces_timer(void);
void call_ng_flags_flags(ng_parser_ctx_t *, str *s, helper_arg dummy);
void call_ng_main_flags(ng_parser_ctx_t *, str *key, bencode_item_t *value);
void call_ng_codec_flags(ng_parser_ctx_t *, str *key, bencode_item_t *value);
void call_ng_direction_flag(sdp_ng_flags *out, bencode_item_t *value);
void call_ng_direction_flag(ng_parser_ctx_t *, bencode_item_t *value);
INLINE struct sdp_manipulations *sdp_manipulations_get_by_id(const sdp_ng_flags *f, enum media_type id) {
if (id < 0 || id >= G_N_ELEMENTS(f->sdp_manipulations))

@ -102,6 +102,7 @@ typedef union {
str_q *q;
str_case_ht *sct;
str_case_value_ht *svt;
int *i;
void *generic;
} helper_arg __attribute__ ((__transparent_union__));

Loading…
Cancel
Save