diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index edc675d23..774809704 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -1422,9 +1422,18 @@ static void call_ng_flags_freqs(ng_parser_ctx_t *ctx, bencode_item_t *value) { } } +static void call_ng_received_from_iter(ng_parser_ctx_t *ctx, str *key, helper_arg arg) { + switch ((*arg.i)++) { + case 0: + ctx->flags->received_from_family = *key; + break; + case 1: + ctx->flags->received_from_address = *key; + break; + } +} void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) { str s = STR_NULL; - bencode_item_t *it; sdp_ng_flags *out = ctx->flags; const ng_parser_t *parser = ctx->parser; @@ -1807,12 +1816,10 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) { case CSH_LOOKUP("received from"): case CSH_LOOKUP("received-from"): - if (value->type != BENCODE_LIST) + if (!parser->is_list(value)) break; - if ((it = value->child)) { - bencode_get_str(it, &out->received_from_family); - bencode_get_str(it->sibling, &out->received_from_address); - } + int i = 0; + parser->list_iter(ctx, value, call_ng_received_from_iter, NULL, &i); break; case CSH_LOOKUP("record call"): case CSH_LOOKUP("record-call"):